2015-10-25 44 views
1

我試圖編譯一個Nuke插件,它與boost庫存有依賴關係。我已經填充了頭文件/庫搜索路徑,並添加了庫以將二進制文件與XCode中的庫鏈接。針對Nuke針對Boost庫編譯插件

它編譯就好了,但是當核彈試圖負載我的插件,誤差坡平出來說:

庫未加載:libboost_atomic-MT-的libstdC++ dylib

我相信有在XCode中破解更多內容。有任何想法嗎?

回答

0

編譯只是戰鬥的一半。您還需要確保Nuke能夠在運行時找到相同的庫,因爲它們是動態鏈接的。

爲了測試插件,可以將包含Boost庫的目錄的路徑附加到DYLD_LIBRARY_PATH環境變量(描述here)。

一旦您測試並確認您使用的Boost庫與Nuke的運行時兼容,您應該可以使用otool(如this)將絕對路徑或相對路徑嵌入到插件庫本身的Boost庫中作爲長期解決方案。

0

對於macOS,NUKE插件需要使用GCC 4.0構建才能兼容。使用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)並且可能使用該版本進行編譯。但它取決於你的情況。

它必須致力於建立NUKE插件讀取Julik的帖子(2014)有用: http://live.julik.nl/2014/12/the-hell-of-building-nuke-dylibs