2016-02-04 103 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