Xcode Cocoa 应用程序 libav* 和 MagickWand 静态库问题
Xcode Cocoa app libav* and MagickWand static library issues
我一直在开发一个 Cocoa 应用程序,该应用程序同时使用 libav* 和 ImageMagick C 库,但在实际分发该应用程序时遇到了问题。我已经链接到 Xcode 中的各种静态库,如下所示:
该应用程序已构建,运行在我的 machine 上完全正常。现在我正尝试 运行 它在另一台计算机上。我存档了构建,并将其导出为 macOS 应用程序 Xcode,这给我留下了 .app 存档。现在,当我尝试在不同的 mac 上 运行 它时,出现以下错误:
如果我 运行 otool -L binary_name
在构建的二进制文件上,我会为每个包含的 .a 文件获得一个 .dylib。我认为静态库的全部意义在于它被内置到主二进制文件中,然后就不需要做任何动态链接了。为什么它仍在尝试加载 dylib?
我设法解决了这个问题,相信这是由于此处列出的技术说明所致:Using static versions of existing dynamic libraries。由于我使用的依赖项是通过自制软件安装的,因此每个依赖项的 lib
文件夹都有 .a 和 .dylib 文件,并且 Xcode 使用 dylibs 进行链接。为了修复它,我将我需要的所有 .a 文件复制到一个单独的文件夹,并调整了 Xcode 中的 Library Search Paths
以指向新文件夹。该应用程序现在可以正常构建并链接到静态库。
我一直在开发一个 Cocoa 应用程序,该应用程序同时使用 libav* 和 ImageMagick C 库,但在实际分发该应用程序时遇到了问题。我已经链接到 Xcode 中的各种静态库,如下所示:
该应用程序已构建,运行在我的 machine 上完全正常。现在我正尝试 运行 它在另一台计算机上。我存档了构建,并将其导出为 macOS 应用程序 Xcode,这给我留下了 .app 存档。现在,当我尝试在不同的 mac 上 运行 它时,出现以下错误:
如果我 运行 otool -L binary_name
在构建的二进制文件上,我会为每个包含的 .a 文件获得一个 .dylib。我认为静态库的全部意义在于它被内置到主二进制文件中,然后就不需要做任何动态链接了。为什么它仍在尝试加载 dylib?
我设法解决了这个问题,相信这是由于此处列出的技术说明所致:Using static versions of existing dynamic libraries。由于我使用的依赖项是通过自制软件安装的,因此每个依赖项的 lib
文件夹都有 .a 和 .dylib 文件,并且 Xcode 使用 dylibs 进行链接。为了修复它,我将我需要的所有 .a 文件复制到一个单独的文件夹,并调整了 Xcode 中的 Library Search Paths
以指向新文件夹。该应用程序现在可以正常构建并链接到静态库。