Проблема оказалась не в описаниях классов, а в сборке библиотеки.
При последовательности:
1. Компилируются .o файлы c такими ключами:
g++296 -fPIC -g <I... I... > -c -o foo1.so.o foo1.C
g++296 -fPIC -g <I... I... > -c -o foo2.so.o foo2.C
...
g++296 -fPIC -g <I... I... > -c -o foon.so.o foon.C
2. Из скомпилированных файлов собирается библиотека libutil.so:
g++296 -shared -o libutil.so foo1.so.o foo2.so.o ... foon.so.o
3. Из скомпилированного объектника линкуется исполняемый файл с использованием билиотеки libutil.so
g++296 -fPIC -g template.so.o version.so.o -L<путь до каталога с libutil.so> -lutil -o template
template.so.o содержит ссылки на методы классов, определенных в объектниках собранных на шаге 1.
По идее эти ссылки должны разрешиться, так как все объектники собраны в библиотеке libutil.so.
Но вылетают ошибки undefined reference
Если же сделать так:
1. Компилируются .o файлы c такими ключами:
g++296 -fPIC -g <I... I... > -c -o foo1.so.o foo1.C
g++296 -fPIC -g <I... I... > -c -o foo2.so.o foo2.C
...
g++296 -fPIC -g <I... I... > -c -o foon.so.o foon.C
2. Линкуем template.so.o вместе с скомпилированными на первом шаге объектниками, не собирая libutil
g++296 -fPIC temlate.so.o version.so.o foo1.so.o foo2.so.o ... foon.so.o -o template
В этом случае все линкуется нормально.
То есть проблема в сборке библиотеки libutil, может я какие ключи пропустил?
(если собрать libutil без ключа -shared, то ошибки теже)
Подскажите в чем проблема ????