我希望在項目中使用OpenVDB庫。該庫已在使用\ MD的發行版中在Windows7 x64上成功編譯(如https://github.com/rchoetzlein/win_openvdb中所述)。 OpenVDB_cookbook也編譯並執行成功。如果我將自己的代碼放在食譜中,它也會成功編譯並執行。OpenVDB鏈接器錯誤:無法解析的外部符號
但是,
如果我的庫鏈接到現有項目,
或我複製粘貼到一個新的項目相同的代碼(從食譜),並使用相同的CMakeLists.txt ,查找* .cmake文件,並從項目屬性從食譜都是一樣的選擇,
它拋出一個連接錯誤「LNK2019:無法解析的外耳炎升符號 「void_cdecl openvdb :: v3_0_0 ::初始化(無效)」 函數主要引用
即使形式的最簡單的代碼:
#include <openvdb.h>
void main()
{
openvdb::initialize();
}
引發此連接錯誤。
任何想法我做錯了什麼?我已經上了幾天,一直無法解決它。
所有庫IlmBase,OpenEXR,glew,glfw,boost和OpenVDB已成功使用cmake鏈接並存在於項目屬性頁面中。
謝謝你的幫助。
您是否在CMake中選擇了「共享庫」?如果是這樣,你必須攜帶這些DLL到新項目 – Kev1n91
@ Kev1n91謝謝你的評論。所有的dll都存在於可執行文件應該存在的文件夾中,它由已經存在於cmakelists.txt中的post_copy宏完成。 沒有選擇選擇共享庫。它應該在cmake GUI中嗎?或者我應該把它寫在cmake文件中?請詳細說明 –
@ Kev1n91添加到我以前的評論:對於每個庫,我使用「target_link_libraries」添加* .lib文件,並在cmake文件中使用「include_directories」添加include目錄。 從cmake GUI中,我確保找到每個庫的* .lib文件。例如,配置後,我得到「OpenVDB庫:找到*/OpenVDB/lib/openvdb.lib」 而且我還檢查它是否存在於VS中的項目屬性中。在CMake Gui中的 –