我应该将linux
一个 c++ 代码与旧代码结合起来,主要代码fortran
在哪里。fortan
我不是这方面的专家,我尝试从简单的测试开始,但我仍然无法编译它。也许我很愚蠢,但我无法在任何地方找到一个可行的例子。当链接可以通过 ifort 完成时,我设法编译了 fortran 和 c(稍后需要使用英特尔编译器和实际的 fortran 代码)。但是如果我理解正确的话,c++
链接必须由c++
编译器(g++
)完成。
那么我在这里做错了什么:
我的 FORTRAN 测试代码“ftest.f”:
PROGRAM MAIN
IMPLICIT NONE
INTEGER I
write(*,*) "hello fortran1"
CALL ctest()
write(*,*) "hello fortran2"
END PROGRAM
和 C++ 代码“ctest.cpp”
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <iostream>
extern "C" void ctest_();
void ctest_(){
int i;
// std::cout << "hello c \n";
printf("hello c\n");
}
我尝试使用以下内容进行编译:
ifort -c ftest.f
g++ -c ctest.cpp
g++ -ldl -lm -limf -L -l -lifcore ctest.o ftest.o
我得到一个错误:
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status
那么我应该怎么做才能成功链接这个程序呢?