2016-02-04 7 views
0

Я - веб-разработчик и имеет очень плохие знания в компиляторе на C++.Создание динамической библиотеки с dependecies

У меня есть приложение 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

Так что вопрос Как может подключаться libmtp с libusb

Я могу думать о 2 способах:

  1. Рекомпилированные libmtp с libusb в зависимые пакеты (как сделать это открытый вопрос для меня)
  2. Установить путь к libusb.dylib для libmtp.dylib (Это открытый вопрос для меня тоже)

Спасибо за любые ответы !!!

ответ

0

Вы можете поместить libusb в свой комплект, а затем изменить путь поиска для него с помощью lib-name-tool. lib-name-tool позволяет вам изменять поиск lib, чтобы он выглядел внутри вашего пакета вместо/usr/local/lib. Таким образом, локальная копия не требуется. На этом сайте показано, как это сделать с приложениями Qt. Принцип для вас одинаковый;

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