2

我一直在使用 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,我编译的二进制文件的大小都是相同的,所以,我用谷歌搜索了如何包含和外部 lib,有些人说我需要在我的 .pro 文件中添加“CONFIG += static”。我做到了,文件的大小增加了,但我仍然遇到同样的错误。

希望可以有人帮帮我。

4

1 回答 1

2

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

于 2011-11-20T22:33:31.377 回答