macos - dylib 库路径并在应用程序中使用它

标签 macos osx-elcapitan dylib otool install-name-tool

我想在 Mac OS X El Capitan (10.11.x) 中创建一个库并通过 qt creator 在另一个应用程序中使用它,所以我使用以下设置在 qt 中创建了一个简单的库:

QT       -= gui
TARGET = /System/Library/Frameworks/MyFrm.framework/dylib/DynminLinkingLib
TEMPLATE = lib

如您所见,我已经在 MyFrm 框架中创建了“DynminLinkingLib”库;之后我创建了一个 Qt 应用程序来使用该库。

QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = SampleProject
TEMPLATE = app
macx: LIBS += -L/System/Library/Frameworks/MyFrm.framework/dylib -lDynminLinkingLib.1.0.0
INCLUDEPATH += /System/Library/Frameworks/MyFrm.framework/include

当我在 qt 中运行我的应用程序时,出现以下错误:

dyld: Library not loaded: libDynminLinkingLib.1.dylib
  Referenced from: /Users/mac/Src/dll/DynamicLinking/build-SampleProject-Desktop_Qt_5_5_0_clang_64bit-Debug/SampleProject.app/Contents/MacOS/SampleProject
  Reason: image not found
The program has unexpectedly finished.

为了解决 Qt 项目中的这个错误,我将 DYLD_LIBRARY_PATH 变量设置为 /System/Library/Frameworks/MyFrm.framework/dylib 并且效果很好,但是当我运行捆绑应用程序它不起作用并给我这个错误:

enter image description here

这是因为“libDynminLinkingLib.1.dylib”不在应用程序路径中。

otool -D /System/Library/Frameworks/MyFrm.framework/dylib/libDynminLinkingLib.1.0.0.dylib
libDynminLinkingLib.1.dylib

我有两个问题:

  1. 我知道如何通过 install_name_tool 解决这个问题,但我想在 qmake 和 .pro 文件中解决这个问题。那么如何通过pro config文件解决这个问题呢?

  2. 在 El Capitan 中,出于安全原因,我无法使用 DYLD_LIBRARY_PATH。为了使用它,我必须停用 SIP(​​系统完整性保护)。那么有什么方法可以在不停用 SIP 的情况下使用 DYLD_LIBRARY_PATH 吗?

最佳答案

这不是一个完整的解决方案,但如果您只想在构建其他内容时包含您构建的一些本地库,您可以创建 ~/lib~/include 文件夹并将文件放在那里。这些文件夹位于默认路径上。

https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/UsingDynamicLibraries.html

关于macos - dylib 库路径并在应用程序中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33874004/

相关文章:

macos - 在 macOS 10.11+ 上过滤或搜索 NSCollectionView

macos - CMake:MacOS 上动态链接资源的运行时错误(dyld:未加载库)

c - LLDB会改变C程序的环境变量地址吗?

macos - 在应用程序商店之外分发 MacOS 应用程序 - 安全与盗版

objective-c - 如何使用 iTunes.h/Scripting Bridge 获取专辑中的所有轨道

macos - 在Mac OS 10.11(El Capitan)上使用pfctl转发端口

macos - MacoS 上 "Matplotlib is building the font cache using fc-list. This may take a moment."的问题

c++ - 创建和使用简单的 .dylib

ruby-on-rails - Rails - Rake 错误 : Library not loaded