【发布时间】:2025-12-10 16:40:01
【问题描述】:
我有 mac os x。我有应用程序,它需要使用共享库(mac 上的框架),它是作为单独的项目开发的,但同时也在 Qt 5 中。
App.pro
.
.
else:mac: LIBS += -F$$OUT_PWD/Frameworks -framework library1
.
.
QMAKE_RPATHDIR += /usr/lib
首先,我告诉 qmake,library1 将驻留在 Frameworks 目录中的捆绑包中(这没问题,链接成功)
其次,QMAKE_RPATHDIR 应该告诉 gcc 编译器,当找到应用程序的库时,它也应该查看 QMAKE_RPATHDIR 中的那些路径。我指定了/usr/lib,只是为了检查它是否可以工作,但是:
otool -l app
不显示任何LC_RPATH(我希望/usr/lib 会有一条记录),如这里Print rpath of executable on OSX
我真的需要设置我的开发环境(Qt 5、Mac OS X、一个基本应用程序、一个核心库(这也将充当插件的 SDK)和其他插件(也可以共享库)。
错误依旧:
dyld: Library not loaded: library1.framework/Versions/1/library1
Referenced from: /Users/Krab/projects/qtProjects/build-rootProject-Desktop_Qt_5_3_0_clang_64bit-Release/app/app.app/Contents/MacOS/app
Reason: image not found
这很明显,因为.pro 文件中的设置仅用于链接,并不能解决这些库的动态加载问题(应该由QMAKE_RPATHDIR 指令解决)。
【问题讨论】: