C ++ Qt:静态构建和外部dylib

时间:2011-11-20 21:03:08

标签: c++ macos qt dynamic-library

我在Qt的个人项目中做过一些有趣的事情。我不是这方面的专家,所以如果这是一个愚蠢的问题(猜不是我找不到任何有用的东西)随意杀了我。

无论如何,我在OSX中,通常使用带有以下命令的shell脚本编译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所以,我google了如何包含和外部lib和一些人说我需要添加“CONFIG + = static”给我。专业档案。我做到了,文件的大小增加但我仍然有同样的错误。

希望有人可以帮助我。

1 个答案:

答案 0 :(得分:2)

错误信息非常清楚,您需要在应用程序中分发libwpsapi.dylib。如果要避免这种情况,请查阅此第三方库的文档以使其使用静态链接代码。请注意,您告诉链接器链接静态库这一事实并不意味着引用了代码。我怀疑代码(或默认)中有某种预处理器#define来使用动态加载的库。