Название: Сборка со статическими библиотеками
Отправлено: aarlan от Ноябрь 10, 2009, 20:07
Добрый вечер всем. Есть две статические либы: libtfs.a и libutil.a. При их создании ошибок не было. Вот лог компиляции приложения, использующего эти либы Running build steps for project dirstest... Starting: /usr/bin/make clean -w make: Entering directory `/home/yunus/Documents/qt/tfs/dirstest' /usr/bin/make -f Makefile.Debug clean make[1]: Entering directory `/home/yunus/Documents/qt/tfs/dirstest' rm -f debug/main.o rm -f *~ core *.core make[1]: Leaving directory `/home/yunus/Documents/qt/tfs/dirstest' /usr/bin/make -f Makefile.Release clean make[1]: Entering directory `/home/yunus/Documents/qt/tfs/dirstest' rm -f release/main.o rm -f *~ core *.core make[1]: Leaving directory `/home/yunus/Documents/qt/tfs/dirstest' make: Leaving directory `/home/yunus/Documents/qt/tfs/dirstest' Exited with code 0. Creating gdb macros library... Configuration unchanged, skipping QMake step. Starting: /usr/bin/make debug -w make: Entering directory `/home/yunus/Documents/qt/tfs/dirstest' /usr/bin/make -f Makefile.Debug make[1]: Entering directory `/home/yunus/Documents/qt/tfs/dirstest' g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4 -Idebug -I. -o debug/main.o main.cpp main.cpp:86: warning: unused parameter main.cpp:86: warning: unused parameter g++ -o dirstest debug/main.o -L/usr/lib -lQtCore -lpthread ../lib/libtfs.a ../lib/libutil.a ../lib/libutil.a(log.o): In function `replace_specific': /home/yunus/Documents/qt/tfs/common/log.cc:106: undefined reference to `GetErrorMessage' collect2: ld returned 1 exit status make[1]: *** [dirstest] Error 1 make[1]: Leaving directory `/home/yunus/Documents/qt/tfs/dirstest' make: Leaving directory `/home/yunus/Documents/qt/tfs/dirstest' make: *** [debug] Error 2 Exited with code 2. Error while building project dirstest When executing build step 'Make'
функция GetErrorMessage() объявляется в error.h: #ifdef __cplusplus extern "C" { #endif const char* GetErrorMessage(int errcode); #ifdef __cplusplus } #endif и используется в log.cc в функции replace_specific. Все другие функции нашлись в liba'x, а эта нет. Подскажите, что делать
Название: Re: Сборка со статическими библиотеками
Отправлено: aarlan от Ноябрь 12, 2009, 21:18
Нашел работающее решение,правда не самое лучшее, как мне кажется. Функцию GetErrorMessage объявил в log.h (до этого была в errors.h), определил в log.cc, поскольку она никем кроме replace_specific(), которая объявлена в log.h не используется. Все теперь правильно работает, правда модульность немного нарушена
|