创建具有依赖项的动态库
Create dynamic library with dependecies
我是一名Web开发人员,对编译器C++知识非常差。
我有一个Electron应用程序并使用libmtp。我想将 libmtp 包含在我的项目中,以避免在机器上未安装 libmpt 时出现这种情况。
我从nodejs包装器调用libmtp函数:
...
var mtp = new ffi.Library(pathToSrc + '/libmtp.9.dylib', {
...
libmtp 依赖于 libusb,所以如果 libusb 没有安装在计算机上,我会收到一个错误
错误:动态链接错误:dlopen(/Users/username/Projects/projectname/build/projectname-darwin-x64/projectname.app/Content/Resources/app/libmtp.9.dylib,2):库未加载:/usr/local/lib/libusb-1.0.0.dylib
所以问题是我如何将libmtp与libusb连接
起来我可以考虑两种方法:
- 将依赖关系的libmtp重新编译为libusb(如何做到这一点对我来说是一个悬而未决的问题)
- 为 libmtp.dylib 设置指向 libusb.dylib 的路径(这对我来说也是一个悬而未决的问题)
感谢您的任何回答!!
您可以将 libusb 放入您的捆绑包中,然后使用 lib-name-tool 更改它的搜索路径。 lib-name-tool 允许您更改对 lib 的搜索,以便它查看您的捆绑包内部而不是/usr/local/lib。这样就不需要安装本地副本。该网站展示了如何使用Qt应用程序做到这一点。原理对你来说是一样的;
http://doc.qt.io/qt-4.8/deployment-mac.html
相关文章:
- 如何从C++中的依赖类型中获得它所依赖的类型
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- C++中的动态铸造故障
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 内联映射初始化的动态atexit析构函数崩溃
- 提示存档文件中的动态库依赖项
- aarch64动态链接器rpath使用辅助依赖链接
- C++具有公共 API 的动态库,可遮盖依赖库
- 创建具有依赖项的动态库
- 具有依赖关系的共享库的动态链接
- 使用-static libgcc-static libstdc++编译仍然会导致对libc.so的动态依赖
- 具有动态依赖关系的静态库
- 如何将一组C++动态分配的对象表示为BGL(Boost Graph Library)图,以获得它们的依赖图
- 依赖地狱:linux.so插件动态加载
- GNU Automake - 构建静态链接到其依赖项的动态库
- 动态库、依赖关系和分布
- 动态加载的PIC共享库具有来自NPIC依赖项的运行时未解析符号
- 依赖项上的c++动态链接可能会导致冲突
- 动态依赖库/tls搜索路径