Как скомпилировать и связать NCReport Shared Library и заголовки в приложении Qt на ОС Ma c - PullRequest
0 голосов
/ 08 января 2020

Я относительно новичок в использовании библиотек в файлах Qt pro. Я скачал NCReport и попытался скомпилировать разделяемые библиотеки и заголовки в мою программу Qt на ОС Ma c.

Фон

Я загрузил все dylib-файлы и заголовки, которые я мог найти в своем Qt pro-файле - пример pro-кода выглядит следующим образом:

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/./release/ -lqgenericbearer
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/./debug/ -lqgenericbearer
else:unix: LIBS += -L$$PWD/./ -lqgenericbearer
else:macx: LIBS += -L$$PWD/./ -lqgenericbearer

INCLUDEPATH += $$PWD/./
DEPENDPATH += $$PWD/./

Примечание. Я использовал относительную ссылку в папке с моей программой, потому что когда я оставлял библиотеки в оригинале папка, это дало мне несовместимую ошибку библиотеки.

Копирование файлов dylib в папку моей программы, казалось, разрешало и компилировало библиотеки в той же версии Qt - не знаю, относится ли это к моей проблеме.

Проблема

Я использовал следующую строку кода и включил соответствующие файлы заголовков в мой cpp файл:

NCReport *report = new NCReport();

При попытке чтобы выполнить приведенный выше код, я получаю следующую ошибку:

Undefined symbols for architecture x86_64:
  "NCReport::NCReport(QObject*)", referenced from:
      test::test() in test.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Accounting.app/Contents/MacOS/Accounting] Error 1
23:22:25: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project Accounting (kit: Desktop Kit)
When executing step "Make"

Кажется, это указывает на то, что реализация неверна и что я не включил библиотеки правильно.

Я также пытался включать заголовки по отдельности, и это, кажется, немного меняет коды ошибок - однако, он просто говорит неопределенные символы для чего-то еще, что, как я полагаю, было вызвано как часть пользовательской функции / класса. Когда я включаю все заголовки в мою программу, это не работает, потому что есть некоторые ссылки на определенные структуры папок в файлах заголовка, а также на файлы "_ui.h", которые создают ошибку, поскольку у меня нет файлов .ui, которые соответствует этому определению.

Кто-то может помочь? Я также обратился к разработчику, чтобы узнать, есть ли какие-либо библиотеки, которые я пропустил, в том числе, но есть ли где-то ошибка в моем коде?

Заранее спасибо!

...