Собрал динамическую библиотеку libbozorth3. В ней определена функция bozorth_main(xyt_struct*, xyt_struct*)
Проверил на тестовом исходнике, собрал с помощью gcc, все скомпилилось, функция отработала нормально.
Но вот когда я подключаю эту же библиотеку к Qt4 (в Qt Creator'е), то gcc ее видит (иначе бы ругался, что библиотека не найдена), но не видит эту функцию (хотя я просто скопировал код из тестового исходника в мой проект). В чем может быть проблема и как исправить? Почему один и тот же gcc в первом случае собирает нормально, а вот вместе с qt4 не находит функцию?
robotex@robotex-laptop ~/workspace/qt_fprint-build-desktop $ gcc -o qt_fprint main.o
mainwindow.o cfingerprintscanner.o cfingerprintdata.o moc_mainwindow.o moc_cfingerprintscanner.o
-lfprint -lQtGui -lQtCore -lpthread -lbozorth3cfingerprintscanner.o:
In function `CFingerprintScanner::comparePrintData(CFingerprintData,
CFingerprintData)':
/home/robotex/workspace/qt_fprint-build-desktop/../qt_fprint/cfingerprintscanner.cpp:475: undefined
reference to `bozorth_main(xyt_struct*, xyt_struct*)'
collect2: ld returned 1 exit status
Может быть при использовании qt4 библиотеки нужно как-то по особому подключать?
Ага, как обычно нужно инклудить заголовочный файл!!! А не просто библиотечка...
А можат экспорта нет???
инклюдится файл, иначе бы ошибка была другая. Какого экспорта? Даже если я просто добавляю эти файлы в проект, то все равно не находит эту функцию.
А можно содержимое *.pro посмотреть?
Вот тут весь проект http://ubuntuone.com/p/hiv/
Убрал библиотеку, вместо этого включил файлы с кодом в проект (папка nbis). И все равно та же самая ошибка:
/home/robotex/workspace/qt_fprint-build-desktop/../qt_fprint/cfingerprintscanner.cpp:475: error: undefined reference to `bozorth_main(xyt_struct*, xyt_struct*)'
функция в файле bz_drvrs.c
Ни у кого никаких идей?
Решение нашлось: http://habrahabr.ru/qa/5990/#answer_25667
Отправить комментарий