创建具有依赖性的动态库

时间:2016-02-04 18:20:15

标签: c++ xcode macos dylib

我是一名Web开发人员,在C ++编译器方面的知识很差。

我有一个Electron应用,并使用libmtp。我想在我的项目中包含libmtp,以避免在机器上没有安装libmpt的情况。

我从nodejs wrapper调用libmtp函数:

...
var mtp = new ffi.Library(pathToSrc + '/libmtp.9.dylib', {
...

libmtp依赖于libusb,所以如果计算机上没有安装libusb,我会收到错误

  

错误:动态链接错误:dlopen(/Users/username/Projects/projectname/build/projectname-darwin-x64/projectname.app/Contents/Resources/app/libmtp.9.dylib,2):库未加载:/usr/local/lib/libusb-1.0.0.dylib

所以问题是如何将libmtp与libusb连接

我可以考虑两种方式:

  1. 重新编译libmtp并依赖libusb(如何做到这一点对我来说是一个悬而未决的问题)
  2. 为libmtp.dylib设置libusb.dylib的路径(对我来说这也是一个未解决的问题)
  3. 感谢您的回答!

1 个答案:

答案 0 :(得分:0)

您可以将libusb放入捆绑包中,然后使用lib-name-tool更改其搜索路径。 lib-name-tool允许您更改lib的搜索,以便它在bundle中而不是/ usr / local / lib中查找。这样就不需要安装本地副本了。该站点展示了如何使用Qt应用程序。你的原则是一样的;

http://doc.qt.io/qt-4.8/deployment-mac.html