2016-09-20 137 views
0

我試圖混合使用Fortran和C++對象文件,這些文件完美地工作並使用簡單的C++文件生成可執行文件。但是,當我嘗試將相同的Fortran目標文件與主C++代碼(這是一個非常大而複雜的代碼)混合時,它會生成下面列出的以下錯誤。我玩過-lgfortran的位置,但沒有運氣。混合gfortran和g ++編譯時未定義的引用

使用的命令是

g++ -o test *.o -static -lpthread -L/usr/local/lib -lquadmath -lgfortran 

及各種排列也都試過了。

錯誤是:

gcc_4_9_2_release/libgfortran/io/write_float.def:1300: undefined reference to `signbitq' 
gcc_4_9_2_release/libgfortran/io/write_float.def:1300: undefined reference to `finiteq' 
gcc_4_9_2_release/libgfortran/io/write_float.def:1213: undefined reference to `finiteq' 
gcc_4_9_2_release/libgfortran/io/write_float.def:1300: undefined reference to `isnanq' 
+1

Gfortran 4.9可以使用gcc和g ++ 4.9,但不適用於不同的編譯器。 – tim18

+0

gfortran和g ++有相同的版本,4.9,它使用一個簡單的示例代碼。 – musafir

+2

您應該顯示導致錯誤消息的命令。你也應該嘗試隔離一個小例子。 –

回答

0

工作命令

 g++ -static -o test *.o -lgfortran -lpthread -L/usr/local/lib -lquadmath 
0

'納米' 兩個c.o,我猜測它可能是你需要一個下劃線fortran.o 。

+0

這是最不可能的,因爲這些符號來自基於C的libquadmath。實際上,您可以很容易地注意到OP已經找到了解決方案。他已經回答了他的問題。這應該是一個評論。 –

相關問題