Я пытаюсь скомпилировать проект C ++ (openFrameworks + CodeBlocks), используя внешнюю библиотеку C.Я получаю ошибку «неопределенная ссылка», хотя я успешно скомпилирую и использую библиотеку в другом месте.
Код состоит из исходных файлов main.cpp, testApp.cpp и заголовочных файлов, включая один для моей библиотеки «myprocessing».Когда я make
, код компилируется и умирает при связывании с ошибкой
obj/i686Release/./src/testApp.o: In function `testApp::update()':
testApp.cpp:(.text+0x261): undefined reference to `gauss_5(datarect_t)'
collect2: ld returned 1 exit status
make: *** [bin/faceGrabber] Error 1
, где gauss_5
- это моя библиотечная функция, и она вызывается в testApp.cpp
(там включен заголовок с объявлениями).
Ниже я вставляю команды make
, используемые для компиляции кода, сгенерированного CodeBlocks (для ясности я обрезал)
# compiling object for: ./src/testApp.cpp
g++ -c -g [some -I...] -DOF_USING_GTK -DOF_USING_MPG123 -Wall
-fexceptions -I. -Ilib/ -MMD -MP -MFobj/i686Debug/./src/testApp.d
-MTobj/i686Debug/./src/testApp.d -oobj/i686Debug/./src/testApp.o
-c ./src/testApp.cpp
# compiling object for: ./src/main.cpp
g++ -c -g -pthread [some -I...] -DOF_USING_GTK -DOF_USING_MPG123
-Wall -fexceptions -I. -Ilib/ -MMD -MP -MFobj/i686Debug/./src/main.d
-MTobj/i686Debug/./src/main.d -oobj/i686Debug/./src/main.o
-c ./src/main.cpp
# linking bin/faceGrabber_debug . ./src ./lib
g++ -o bin/faceGrabber_debug obj/i686Debug/./src/testApp.o
obj/i686Debug/./src/main.o -Wl,-rpath=./libs -Llib/ -lz
-lmyprocessing [some libs...]
Обратите внимание, что на мою библиотеку ссылаются (-lmyprocessing
) в последнем шаге связывания.Таким образом, все заголовки и библиотеки находятся компилятором, но почему-то они не компилируются.
Я попытался использовать .a
статические и .so
динамические файлы для моей обработки, но безуспешно.Как я уже упоминал, я использую ту же библиотеку в другом проекте (за исключением openFrameworks и CodeBlocks), и она работает.