c++代码中调用由fortran编译的静态库函数在windows(编译器vs2012+intel visual fortran 2013)下,可以成功调用,运行结果正确。
但是移植到linux(编译器c++ f95)下时,在链接时找不到静态库中的函数。
因为fortran代码比较老,所以最好不要对fortran源码进行改动。
附件为测试代码
Linking CXX executable ../bin/Main
CMakeFiles/Main.dir/main.cpp.o: In function `main':
main.cpp:(.text+0x3e): undefined reference to `ADD'
[C++] 纯文本查看 复制代码 #include <cstdio>
extern "C" void ADD(double *, double *, double *);
int main(int argc, char** argv)
{
double a=10;
double b=1;
double sum;
ADD(&a,&b,&sum);
printf("a + b = %lf\n", sum);
return 0;
}
[Fortran] 纯文本查看 复制代码
subroutine add(a, b, sum)
real(8) a
real(8) b
real(8) sum
sum = a + b
end
|