Есть два класса MAP и SET (пародии на std::map и std::list ). Они шаблонные
Помимо этих классов есть еще куча. Все собирается в статическую либу.
Вот процесс компиляции и сборки либы:
Код: Выделить всё
make: Вход в каталог `/home/markeshov/EvolutionServerRev2/src/Packets'
g++ -c -pipe -g -fPIC -Wall -W -D_REENTRANT -D_32 -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4 -I../../include -I. -o packet.o packet.cpp
g++ -c -pipe -g -fPIC -Wall -W -D_REENTRANT -D_32 -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4 -I../../include -I. -o header.o header.cpp
g++ -c -pipe -g -fPIC -Wall -W -D_REENTRANT -D_32 -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4 -I../../include -I. -o dataiterator.o dataiterator.cpp
g++ -c -pipe -g -fPIC -Wall -W -D_REENTRANT -D_32 -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4 -I../../include -I. -o moving.o moving.cpp
g++ -c -pipe -g -fPIC -Wall -W -D_REENTRANT -D_32 -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4 -I../../include -I. -o controlmoving.o controlmoving.cpp
g++ -c -pipe -g -fPIC -Wall -W -D_REENTRANT -D_32 -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4 -I../../include -I. -o updateobject.o updateobject.cpp
g++ -c -pipe -g -fPIC -Wall -W -D_REENTRANT -D_32 -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4 -I../../include -I. -o objectinfo.o objectinfo.cpp
g++ -c -pipe -g -fPIC -Wall -W -D_REENTRANT -D_32 -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4 -I../../include -I. -o getvisiblelist.o getvisiblelist.cpp
g++ -c -pipe -g -fPIC -Wall -W -D_REENTRANT -D_32 -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4 -I../../include -I. -o object.o object.cpp
g++ -c -pipe -g -fPIC -Wall -W -D_REENTRANT -D_32 -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4 -I../../include -I. -o set.o set.cpp
g++ -c -pipe -g -fPIC -Wall -W -D_REENTRANT -D_32 -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4 -I../../include -I. -o map.o map.cpp
g++ -c -pipe -g -fPIC -Wall -W -D_REENTRANT -D_32 -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4 -I../../include -I. -o variant.o variant.cpp
rm -f libPackets.a
ar cqs libPackets.a packet.o header.o dataiterator.o moving.o controlmoving.o updateobject.o objectinfo.o getvisiblelist.o object.o set.o map.o variant.o
rm -f ../../bin/libPackets.a
mv -f libPackets.a ../../bin/
make: Выход из каталога `/home/markeshov/EvolutionServerRev2/src/Packets'Все норм... потом, когда пытаюсь использовать библиотеку в исполняемом файле, то появляются неразрешимые ссылки на объект MAP и SET.
делаю objdump либы (опустил ненужное):
Код: Выделить всё
set.o: file format elf32-i386
SYMBOL TABLE:
00000000 l df *ABS* 00000000 set.cpp
00000000 l d .text 00000000 .text
00000000 l d .data 00000000 .data
00000000 l d .bss 00000000 .bss
00000000 l d .debug_abbrev 00000000 .debug_abbrev
00000000 l d .debug_info 00000000 .debug_info
00000000 l d .debug_line 00000000 .debug_line
00000000 l d .debug_str 00000000 .debug_str
00000000 l d .note.GNU-stack 00000000 .note.GNU-stack
00000000 l d .comment 00000000 .comment
map.o: file format elf32-i386
SYMBOL TABLE:
00000000 l df *ABS* 00000000 map.cpp
00000000 l d .text 00000000 .text
00000000 l d .data 00000000 .data
00000000 l d .bss 00000000 .bss
00000000 l d .debug_abbrev 00000000 .debug_abbrev
00000000 l d .debug_info 00000000 .debug_info
00000000 l d .debug_line 00000000 .debug_line
00000000 l d .note.GNU-stack 00000000 .note.GNU-stack
00000000 l d .comment 00000000 .commentт.е. ваще... только отладочная информация.. а где MAP и SET??
так же есть другой класс, который использует шаблоны dataiterator, там все нормально!
Код: Выделить всё
g++ --version
g++ (Ubuntu 4.4.1-4ubuntu8) 4.4.1Первый раз с таким сталкиваюсь... че за ?)