混合gfortran和g ++编译时未定义的引用

问题描述:

我试图混合使用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

您应该显示导致错误消息的命令。你也应该尝试隔离一个小例子。 –

工作命令

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

'纳米' 两个c.o,我猜测它可能是你需要一个下划线fortran.o 。

+0

这是最不可能的,因为这些符号来自基于C的libquadmath。实际上,您可以很容易地注意到OP已经找到了解决方案。他已经回答了他的问题。这应该是一个评论。 –