編譯的openmpi應用程序在編譯我的應用程序時,我一直在遇到這個鏈接錯誤:(?大概BEC增量聯)鏈接錯誤在Windows
error LNK2001: unresolved external symbol "public: __cdecl MPI::Comm::Comm(void)" ([email protected]@@[email protected]) E:\Users\UT1JVT\Tanoshii\Eden\Inceptor2\Inceptor2\Node.obj Inceptor2
如果我連續編譯它兩次,它改變這個:
error LNK2019: unresolved external symbol "public: __cdecl MPI::Comm::Comm(void)" ([email protected]@@[email protected]) referenced in function "public: __cdecl MPI::Intracomm::Intracomm(struct ompi_communicator_t *)" ([email protected]@@[email protected][email protected]@@Z) E:\Users\UT1JVT\Tanoshii\Eden\Inceptor2\Inceptor2\Node.obj Inceptor2
我已經嘗試過在x64和32位模式下使用匹配的MPI庫無濟於事。我也定義了:OMPI_IMPORTS, OPAL_IMPORTS and ORTE_IMPORTS
(它修復了我之前的一些鏈接錯誤),但我仍然無法擺脫這一個。
的違規行爲:
_roleLocalComm = &MPI::COMM_WORLD.Split(_roleId,_nodeId);
如果我刪除此行(創建通訊組中的所有代碼),錯誤消失。我在Linux(Open MPI v1.6.5)中構建了相同的源代碼,並且工作正常。
這裏的編譯命令:
/Zi /nologo /W3 /WX- /Od /D "_DEBUG" /D "_CONSOLE" /D "OMPI_IMPORTS" /D "OPAL_IMPORTS" /D "ORTE_IMPORTS" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fp"x64\Debug\testx64.pch" /Fa"x64\Debug\" /Fo"x64\Debug\" /Fd"x64\Debug\vc100.pdb" /Gd /errorReport:queue
更新: 我試圖剝離下來到光禿禿的骨頭和使用MPIC++編譯它,但我仍然得到同樣的確切問題。這裏的命令行:
mpic++ EntryPoint.cpp -showme
cl.exe EntryPoint.cpp /D "OMPI_IMPORTS" /I"C:\Program Files\OpenMPI_v1.6.2-x64\include" /TP /EHsc /link /LIBPATH:"C:\Program Files\OpenMPI_v1.6.2-x64\lib" libmpi_cxx.lib libmpi.lib libopen-pal.lib libopen-rte.lib advapi32.lib Ws2_32.lib shlwapi.lib
不能讓它在最初的工作(噸鏈接錯誤),但後來我意識到,OMPI_IMPORTS
沒有定義所以我編輯%的openmpi%/股/的openmpi/MPIC++ - 包裝-data.txt添加/D "OMPI_IMPORTS"
此外,它可能都提到我也正在爲MPI :: Datatype :: Free()似乎是一個known issue鏈接失敗。我通過添加下面的代碼爲此做了一個解決方法。我想這不會導致我很大的問題,因爲我的數據類型不會被清理,直到作業完成。
void MPI::Datatype::Free(void) {
}
可能有助於顯示你的編譯命令:如果你有意見和一些經驗,你可能會權衡英寸 –
@ bob.sacamento我已經添加了編譯命令。我正在使用visual studio 2010 – Mel
對不起,對vis studio 2010不熟悉。我可能會嘗試重新排列要鏈接的庫的順序。這有助於解決這些錯誤。這就是我所擁有的。祝你好運! –