【发布时间】:2016-04-06 22:09:25
【问题描述】:
我正在尝试验证一个用 c++ 编写的简单 hello world 函数可以从 FORTRAN 脚本(gfortran 4.9.20)中调用。我对 c++ 和 FORTRAN 都没有什么经验,所以我认为这是我应该开始的。
//code.cpp
#include <iostream>
extern "C"
{
void worker();
int main()
{
worker();
}
void worker()
{
std::cout << "Hello, World!\n";
}
}
以及如下的标题
//code.h
#include "code.cpp"
extern "C"
{
void worker();
}
我可以使用下面的简单代码在 c++ 中调用我的 hello 函数
//readheader.cpp
#include "code.h"
extern "C"
{
void worker();
}
我认为一切都很好,直到我尝试使用 FORTRAN 读取相同的代码。这可能是我的编译行,此时我不确定我的代码的哪一部分被破坏了。下面是我的 FORTRAN 代码
c codeF.f
program main
include 'code.h'
print *, 'Calling C'
call worker()
print *, 'Back to F77'
end program main
我的编译脚本
gfortran -I/Path/to/file -c codeF.f
'code.h' 标头出现大约 8 个错误。虽然我的 c++ 代码可以读取标题 FORTRAN 不能。到目前为止,我所有的互联网研究都将我带到了这里,希望有经验的人可以帮助我。
谢谢
【问题讨论】:
-
从你的 c/c++ 代码创建一个库。并且不要将实现包含在标题中 (
#include <code.cpp>)。然后将 fortran 程序与库链接。 -
#include "code.cpp"逆风闻到 5 英里。 -
您不能将 C++ 和 Fortran 组合在一个文件中。这就是“包含'code.h'”的作用。您需要将 C++ 和 Fortran 部分完全分开!
-
@BitTickler 没必要,编译
gfortran cpp_part.cc fpart.f90 -lstdc++即可。