我目前正在 Qt 中开发一个程序,它使用库 libqextserialport.1.dylib。
我构建它并在 x 代码中运行,它返回:
dyld: Library not loaded: libqextserialport.1.dylib
Referenced from: /Users/samuelreh/Desktop/QtOpenCV/build/Debug/QtOpenCV.app/Contents/MacOS/QtOpenCV
Reason: image not found
该库位于 /Users/samuelreh/Desktop/QtOpenCV/qextserialport/build/。
我可以通过更改为可执行文件夹 /Users/samuelreh/Desktop/QtOpenCV/build/Debug/QtOpenCV.app/Contents/MacOS/ 并输入:
install_name_tool -change libqextserialport.1.dylib /Users/samuelreh/Desktop/QtOpenCV/qextserialport/build/libqextserialport.1.dylib QtOpenCV
我知道除此之外可能还有很多解决方案。有人知道 x 代码中最好/最优雅/最简单的做法吗?
我刚刚通过模块捆绑项目完成了这一点。这被包含到一个具有单独可执行文件的更大项目中。
我添加了“将 dylibs 复制到框架”步骤,将 dylibs 复制到 /Foobar.bundle/Contents/Frameworks/Foobar/。然后我添加了一个运行脚本阶段作为最后一步运行,以修复可执行文件中 dylib 的安装名称:
install_name_tool -change libBobDylan.dylib @executable_path/../Plugins/Foobar.bundle/Contents/Frameworks/Foobar/libBobDylan.dylib path/to/build/product/Foobar.Bundle/Contents/MacOS/Foobar
当然,libBobDylan.dylib 也链接到 libBillyIdol.dylib。因此,我必须在目标的最开始添加另一个运行脚本阶段来修复此处的安装名称:
install_name_tool -change libBillyIdol.dylib @executable_path/../Plugins/FooBar.bundle/Contents/Frameworks/Foobar/libBillyIdol.dylib local/path/to/libBobDylan.dylib
我有十多个可以链接的内容;我必须说服 dylib 的供应商填充他们的标头以适应我的许多 install_name 更改......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)