2017-09-27 105 views
0

我希望在項目中使用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鏈接並存在於項目屬性頁面中。

謝謝你的幫助。

+0

您是否在CMake中選擇了「共享庫」?如果是這樣,你必須攜帶這些DLL到新項目 – Kev1n91

+0

@ Kev1n91謝謝你的評論。所有的dll都存在於可執行文件應該存在的文件夾中,它由已經存在於cmakelists.txt中的post_copy宏完成。 沒有選擇選擇共享庫。它應該在cmake GUI中嗎?或者我應該把它寫在cmake文件中?請詳細說明 –

+0

@ Kev1n91添加到我以前的評論:對於每個庫,我使用「target_link_libraries」添加* .lib文件,並在cmake文件中使用「include_directories」添加include目錄。 從cmake GUI中,我確保找到每個庫的* .lib文件。例如,配置後,我得到「OpenVDB庫:找到*/OpenVDB/lib/openvdb.lib」 而且我還檢查它是否存在於VS中的項目屬性中。在CMake Gui中的 –

回答

0

該問題已通過添加dir \ src解決。和dir \ src ..添加到屬性 - > C/C++ - >常規下的其他包含目錄。其中dir是源代碼和構建的目錄。我不知道爲什麼我必須添加這個。

相關問題