我正在尝试为Nuke编译一个与boost库有依赖关系的插件。我填写了header / libs搜索路径,并添加了libs以将二进制文件与XCode中的库链接起来。
它编译得很好,但是当Nuke尝试加载我的插件时,错误就出现了:
未加载库:libboost_atomic-mt-libstdc ++。dylib
我认为必须在XCode中修改更多内容。任何想法?
答案 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