【问题标题】:Compiling plugin for Nuke against Boost libraries针对 Boost 库为 Nuke 编译插件
【发布时间】:2016-01-24 15:53:14
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ xcode boost plugins nuke


    【解决方案1】:

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

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

    一旦您测试并确认您使用的 Boost 库与 Nuke 的运行时兼容,您应该能够使用 otool(如 this)在插件库本身就是一个长期的解决方案。

    【讨论】:

      【解决方案2】:

      对于 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多