1

我正在尝试为 Nuke 编译一个与 boost 库有依赖关系的插件。我已经填写了 headers/libs 搜索路径并添加了库以将二进制文件与 XCode 中的库链接。

它编译得很好,但是当 Nuke 尝试加载我的插件时,会弹出错误消息:

未加载库:libboost_atomic-mt-libstdc++.dylib

我相信必须在 XCode 中破解更多内容。有任何想法吗?

4

2 回答 2

0

对于 macOS,NUKE 插件需要使用 GCC 4.0 构建才能兼容。使用 LLVM 或 GCC 4.2 几乎不会产生兼容的插件。在 macOS 上,NUKE 是基于 Snow Leopard 构建的,因此 The Foundry 建议第三方开发人员也这样做!如果您在最新版本的 macOS 上构建,它们通常与旧版本不兼容。

生成的共享对象文件 (.dylib)应移动到您的~/.nuke目录(或NUKE plugin_path)。

如果您想使用 Intel 编译器进行构建,请在您的 makefile 中将其替换为 g++,但是您必须确保 libstdc++ 包含来自 GCC 4.0 安装的库才能兼容。另外建议使用 10.6 SDK 来构建插件。

但是,有些人说您可以安装 GCC 4.2(通过 Homebrew)并可能使用该版本进行编译。但这取决于你的情况。

阅读 Julik 关于构建 NUKE 插件的帖子(2014 年)一定很有用:http: //live.julik.nl/2014/12/the-hell-of-building-nuke-dylibs

于 2017-01-16T09:51:56.080 回答
0

编译只是成功的一半。您还需要确保 Nuke 可以在运行时找到这些相同的库,因为它们是动态链接的。

为了测试插件,您可以将包含 Boost 库的目录的路径附加到DYLD_LIBRARY_PATH环境变量(在此处描述)。

一旦您测试并确认您正在使用的 Boost 库与 Nuke 的运行时兼容,您应该能够otool这样使用在插件库本身中嵌入 Boost 库的绝对或相对路径作为长期解决方案。

于 2015-10-26T01:37:37.120 回答