针对Boost库编译Nuke插件

时间:2015-10-25 14:13:52

标签: c++ xcode boost plugins nuke

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

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

  

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

我认为必须在XCode中修改更多内容。任何想法?

2 个答案:

答案 0 :(得分:0)

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

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

一旦您测试并确认您正在使用的Boost库与Nuke的运行时兼容,您应该可以使用otool之类的public class Triangle { private Point PointA; public void draw(){ System.out.println("Triangle draw."); System.out.println(getPointA().getX()); } /** * @return the PointA */ public Point getPointA() { return PointA; } /** * @param PointA the PointA to set */ public void setPointA(Point PointA) { this.PointA = PointA; } } 来将插件库本身的Boost库中的绝对或相对路径嵌入作为长期解决方案。

答案 1 :(得分:0)

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

生成的共享目标文件(.dylib)应移至〜/ .nuke 目录(或 NUKE plugin_path

如果您想使用英特尔编译器构建,请在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