C ++ Qt: статические сборки и внешние библиотеки - PullRequest
2 голосов
/ 21 ноября 2011

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

В любом случае, я нахожусь в OSX и обычно я компилирую финальные версии со статической версией Qt, используя скрипт оболочки с этими командами:

cd "project folder...";
PATH=/Users/TCB13/(...)/qt-source/bin:$PATH;  --> Path to my static QT.
export PATH;
qmake -config release; 
make; 
make clean;

Пока я перевожу скомпилированный двоичный файл на другой компьютер без установленного Qt, все работает просто отлично! ;)

Вчера я начал играть с динамической библиотекой, предоставленной компанией, и я включил dylib в свой файл .pro следующим образом: (У меня есть копия dylib в папке проекта)

#macx: LIBS += -L$$PWD/ -lwpsapi

#INCLUDEPATH += $$PWD/
#DEPENDPATH += $$PWD/

И когда я компилирую его «статически» (используя команды выше) и запускаю на другом компьютере, я получаю:

dyld: Library not loaded: @executable_path/libwpsapi.dylib
 Referenced from: /Users/TCB13/Desktop/dude111
 Reason: image not found
Trace/BPT trap: 5

Я заметил, что размер моего скомпилированного бинарного файла одинаков как с dylib, так и без него, поэтому я гуглил, как включить и внешний lib, и некоторые люди говорят, что мне нужно добавить «CONFIG + = static» к моему. Про файл. Я сделал это, и размер файла увеличился, но я все еще получил ту же ошибку.

Надеюсь, кто-нибудь может мне помочь.

1 Ответ

2 голосов
/ 21 ноября 2011

Сообщение об ошибке довольно ясно, вам нужно распространять libwpsapi.dylib с вашим приложением. Если вы хотите избежать этого, обратитесь к документации этой сторонней библиотеки, чтобы использовать статически связанный код. Обратите внимание, что тот факт, что вы говорите компоновщику связать статическую библиотеку, не означает, что на код ссылаются. Я подозреваю, что в коде есть какой-то препроцессор #define (или по умолчанию) для использования динамически загружаемой библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...