使用Fortran程序调用c ++函数编译错误

时间:2013-06-29 09:08:50

标签: c++ fortran90

我正在尝试在编译时将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 to operator new [](unsigned long)' quenchf.cpp :(。text + 0x1359):未定义引用operator new[](unsigned long)' quenchf.cpp:(.text+0x136d): undefined reference to operator new [](unsigned long)' quenchf.cpp :(。text + 0x1381):未定义引用operator new[](unsigned long)' quenchf.cpp:(.text+0x1395): undefined reference to operator 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 ++对象,所以这可能会导致问题。

感谢您的帮助 -

1 个答案:

答案 0 :(得分:0)

您尚未链接到C ++运行时(提供operator new[](unsigned long)等内容)。麻烦的是,你需要C ++和Fortran运行时,我不知道如何实现这一点,但必须有一种链接器标志的方法。