用C++編寫的代碼用LapackE和MPI庫編譯並運行在使用GNU C++ 4.9.2的Windows上很好。在Windows上編譯C++/LapackE代碼很好,但是相同的代碼在Linux上編譯失敗
將該代碼遷移到Linux(CentOS)服務器無法編譯! Linux機器上的GNU C++是4.4.7。在這兩種情況下,我使用了相同的LapackE頭文件。 MPI在Linux機器上運行良好。
當在兩臺機器上的預處理器的輸出文件檢查,我可以涉及錯誤消息到在原始代碼中複雜聲明由_Complex替換以下幾種情況。這裏是在Linux編譯時具有問題的複數動態陣列哈密頓的聲明的例子:
IN THE ORIGNIAL SOURCE: lapack_complex_double *哈密頓;
IN WINDOWS PREPROC。 FILE(效果很好): _lapack_complex_double * HAMILTONIAN;
在LINUX PREPROC。 FILE(無法編譯): double _Complex * HAMILTONIAN;
請問這是否與GCC的不同版本有關?
我試過了#define _Complex complex但最終沒有幫助。
C99 _Complex和C++複雜互操作性的一些報告問題:possible similar problem。
請幫忙。謝謝!
顯而易見的答案是,'/ home'中包含的頭文件之一使用''和'「minMathsForEPM.h」 ,但沒有明確地「包含」他們自己。因此,你需要自己做。 –
@ Sam Varshavchik:棘手的事情是在最後一段,如果在「工作代碼」(第二個代碼)中添加程序,那麼它不起作用,所有的錯誤都與複雜數量的聲明有關。這在Windows上編譯時不會發生。 – Boki
你還沒有解釋「問題」是什麼。在事物的宏偉計劃中,重新包裝包含文件是一件微不足道的事情,可以在幾秒鐘內發出。 「問題」似乎已經解決了:重新排序包含文件。 –