2017-10-11 93 views
0

我正在嘗試編輯一個很大的'ol風洞模擬,以.hdf5格式而不是當前格式,.CSV格式輸出文件。HDF5 + Eclipse CDT錯誤

整個模擬當前在Eclipse CDT上運行,編譯爲&,使用MinGW g ++在Windows和Linux平臺上混合使用;我正在使用Windows 7 Enterprise設備。我的工作是編輯模擬源代碼的幾行以輸出HDF5格式的文件。

問題是 - 如果沒有「未定義參考」錯誤的大雜燴,我什麼也得不到。我開始使用Windows的HDF5 1.8.19發行版,但包含的.lib + .dll文件是專門爲MSVS2013編譯器設計的。由於g ++的兼容性,我已經轉向使用Linux行結尾,但我仍然遇到大量「未定義參考」錯誤。

我正在鏈接庫和包含文件,並且我還鏈接了它們的搜索路徑。這個問題似乎是由於某些原因,MinGW鏈接器無法讀取libhdf5_cpp.a文件中的符號名稱。

有什麼想法?有沒有人有嘗試將eclipse與HDF5接口的經驗?

我只是試圖運行this示例代碼。

我輸出的錯誤如下:

g++ "-LC:\\Users\\jk5759\\workspace\\HDF5_Test" -o HDF5_Test.exe main.o -lhdf5_cpp -static 
main.o: In function `main': 
C:\Users\jk5759\workspace\HDF5_Test\Debug/../main.cpp:14: undefined reference to `H5check_version' 
C:\Users\jk5759\workspace\HDF5_Test\Debug/../main.cpp:14: undefined reference to `H5Fcreate' 
C:\Users\jk5759\workspace\HDF5_Test\Debug/../main.cpp:17: undefined reference to `H5Fclose' 
collect2: ld returned 1 exit status 

回答

0

一般來說,C++庫,必須明確建立針對特定目標的編譯器,由於名稱重整問題,不同的二進制規格爲例外,等你最好的打賭可能是使用MinGW從源代碼構建HDF5庫並使用它。

另請參閱here(MinGW文檔)。

0

我自己會回答這個問題,因爲網上沒有任何資源真正談到使用HDF5 + Windows + MinGW GCC + Eclipse。

安裝說明HDF5使用下列要求: -eclipse CDT霓虹燈 -Windows 7企業 -C++編程 -MinGW GCC編譯

1)請確保你登錄與管理privelages。沒有管理員權限,MinGW和MSYS以及HDF5可能無法正確安裝。

2)獲取HDF5版本1.8.2。這可通過以下URL獲得:https://support.hdfgroup.org/ftp/HDF5/prev-releases/hdf5-1.8/hdf5-1.8.2/src/ 確保獲得.tar版本。該文件夾僅包含源代碼,將來仍需要進行編輯。

解壓縮tarball並將其移動到可輕鬆找到的目錄。我的標籤是「MyHDFstuff」,並位於「Documents」文件夾中。 一旦壓縮包進行解包,找到名爲H5pubconf.h所有文件,並將以下行添加到程序的結尾: 應該有兩根H5pubconf.h文件,一個在/ src目錄/文件夾,一個在/窗/ src /文件夾。

/* ~~~~ User Added Code ~~~~ */ 
    #ifndef H5_HAVE_WIN32_API 
    #ifdef WIN32 /* defined for all windows systems */ 
    #define H5_HAVE_WIN32_API 1 
    #endif 
    #endif 

    #ifndef H5_HAVE_MINGW 
    #ifdef __MINGW32__ /*defined for all MinGW compilers */ 
    #define H5_HAVE_MINGW 1 
    #endif 
    #endif 

    //fixes second problem 
    #define H5_BUILT_AS_DYNAMIC_LIB 1 

3)獲取用於windows的MSYS linux命令行模擬器。這是一個與MinGW連接並提供類似Lunix的實用程序的工具。 特別intrest給我們的那些是「的./configure」,‘做’和‘做安裝’命令。它可以在這裏獲得:http://www.mingw.org/wiki/MSYS

4)啓動MSYS。使用「cd」命令導航到MSYS中的「MyHDFstuff」文件夾。請從MSYS提示符下鍵入以下命令:

$ ./configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --disable-hl --prefix=$HOME 
    $ make 
    $ make check 
    $ make install 

這將建立HDF5庫MinGW的編譯器。你應該得到一個錯誤 - 忽略它,它不會阻止你的代碼編譯和運行。 5)在你的eclipse項目設置中,進行以下更改: - 爲包含路徑添加「hdf5-1.8.2 \ C++ \ src」。這是大部分C++實用程序 - 爲您的包含路徑添加「hdf5-1.8.2 \ src」。這是大多數HDF5 C盤根公用事業 的-add 「hdf5-1.8.2 \ src.libs」 你的庫文件夾搜索路徑(-L) -add 「HDF5」 你的庫(-l)

**請注意,這不會讓你一路使用C++ API接口,但您將能夠使用C命令(https://support.hdfgroup.org/HDF5/doc1.8/)進行編程。 如果不遵循這些步驟,那麼你就可以使用幾個C接口的命令,包括文件創建的,但你的可執行文件將失敗,因爲這將是 無法找到數據類型接口。

***我會附上一個例子C++程序和輸出文件在未來參考

編碼愉快!