2016-02-04 57 views
0

我是一个Web开发人员,并在C++编译器很差知识动态库。创建依赖条件

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

我打电话libmtp功能从的NodeJS包装:

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

libmtp取决于libusb的,所以如果电脑上没有安装的libusb我得到一个错误

Error: Dynamic Linking Error: dlopen(/Users/username/Projects/projectname/build/projectname-darwin-x64/projectname.app/Contents/Resources/app/libmtp.9.dylib, 2): Library not loaded: /usr/local/lib/libusb-1.0.0.dylib

所以,问题是如何我可以用libusb连接libmtp

我可以考虑两种方式:

  1. 重新编译libmtp与dependecy与libusb(如何做到这一点对我来说是一个悬而未决的问题)
  2. 设置路径libusb.dylib为libmtp.dylib(这是一个开放的问题,对我来说太)

感谢您的答案!

回答

0

你可以把libusb的在你的包,然后用LIB-NAME工具更改搜索路径它。 lib-name-tool可以让你改变对lib的搜索,使它看起来像你的bundle而不是/ usr/local/lib。这样就不需要安装本地副本。这个网站展示了如何用Qt应用程序来完成它。原则对你来说是一样的;

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