0

我试图在编译时将 C++ 函数链接到 Fortran 程序中。我正在使用 make 文件使用 mpif90 进行编译。我将 C++ 目标文件添加到后者中的目标文件列表中。该函数通过它自己编译得很好

g++ -c -o quenchf.o quenchf.cpp

但是当我将 .o 文件添加到我的 Fortran 程序文件的 make 文件中时,我得到了错误:

quenchf.o:在函数中Optim::Optim(double, double, int, int)': quenchf.cpp:(.text+0x1348): undefined reference tooperator new[](unsigned long)' quenchf.cpp:(.text+0x1359): undefined reference to operator new[](unsigned long)' quenchf.cpp:(.text+0x136d): undefined reference tooperator new[](unsigned long)' quenchf.cpp:(.text+0x1381): undefined对operator new[](unsigned long)' quenchf.cpp:(.text+0x1395): undefined reference tooperator new[](unsigned long)' quenchf.o:quenchf.cpp:(.text+0x13a9) 的引用:对operator new[](unsigned long)' follow quenchf.o:(.eh_frame+0x13): undefined reference to__gxx_personality_v0' 的更多未定义引用 make: * [ljnpt.exe] 错误 1

我需要将 C++ 链接到 Fortran 库吗?我在 c 函数中实例化了一个 C++ 对象,所以这可能会导致问题。

谢谢你的帮助-

4

1 回答 1

0

您还没有链接到 C++ 运行时(它提供了类似的东西operator new[](unsigned long))。麻烦的是,您将需要 C++ 和 Fortran 运行时,我不知道如何实现,但必须有一种使用链接器标志的方法。

于 2013-06-29T09:15:41.403 回答