我正在尝试在编译时将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 ++对象,所以这可能会导致问题。
感谢您的帮助 -
答案 0 :(得分:0)
您尚未链接到C ++运行时(提供operator new[](unsigned long)
等内容)。麻烦的是,你需要C ++和Fortran运行时,我不知道如何实现这一点,但必须有一种链接器标志的方法。