链接c++和Fortran90代码时出错
Errors while linking C++ and Fortran90 code
所以我正在努力链接两个简单的代码,一个在c++和另一个在Fortran90。我花了几天的时间在网上浏览,我所看到的一切都让我觉得我所做的应该有效,但我在这里,所以显然它不是。这是我得到的
c++ Code: BasicFusion.cpp
#include <iostream>
#include <fstream>
using namespace std;
extern "C"
{
void Fusion_(double *T, double *dens);
}
void Fusion_(double *T, double *dens)
{
double dT;
FILE *fp;
fp = fopen("Temp.dat","a");
dT = *dens * 1.46e-9;
*T = *T + dT;
cout << "The new Temperature is: " << T << endl;
fprintf(fp, "%f n" T);
fclose(fp);
}
Fortran Code: BasicHydro.f90
program BasicHydro
implicit none
double precision :: R
double precision :: rho
double precision :: T = 1.0d4
double precision :: M = 2.0d30
double precision :: G = 6.67d-11
double precision :: k = 1.381d-23
double precision :: pi = 3.14159265359d0
integer :: i
do i=1,10,1
open(1,file='density.dat',action='write',position="append")
R = (75/(4*pi))*((k*T)/(G))**2
write(*,*) 'The new density is',rho
write(1,*) rho
close(1)
call Fusion(T,rho)
end do
end program BasicHydro
在命令行中输入:
>g++ -c BasicFusion.cpp
>gfortran -c BasicHydro.f90
>gfortran -o HydroThermo BasicFusion.o BasicHydro.o -lstdc++
我还使用ifort来代替gfortran,使用相同的标签和文件。在这两种情况下,我得到相同的错误:
BasicHydro.o: In function `MAIN__':
BasicHydro.f90:(.text+0x27d): undefined reference to `fusion_'
我所见过的所有示例都没有在fortran代码中引用c++程序,尽管它们使用相同的结构来布局所有内容。
所以我的导师只是停了下来,并通过一些其他文档之后,似乎因为Fortran是不依赖于大小写,它自动使所有的小写。因为我用大写的F来定义Fusion,所以c++的目标文件中有一个大写的F。所以当我试图运行整个程序时,fortran部分在寻找Fusion,而c++部分只有Fusion…
这个故事的寓意:所有的东西都是小写的。
相关文章:
- 在Linux for Windows上编译C++代码时出错
- 尝试将另一个子句添加到代码中时出错
- 将代码从 Python 转换为 C++ 时出错
- <limits> 使用 VSC2019 编译旧代码时出错
- 使用 Visual Studio 代码读取 C++ 中的输入流时出错
- 在OpenGL中使用程序集代码渲染视频时出错
- 编译以下代码时出错
- Boost FFT示例-编译时出错,这段代码在做什么
- 编译在 Python 代码内部调用的 C++ 代码时出错,使用 Boost Python
- C++:为什么这段代码会出错?多元线性回归
- 混合开放MP/MPI代码中的多线程发送/接收时出错
- 将节点 js 代码集成到 cpp 库时出错
- 构建代码时出错
- 在字符串流中使用来自 github 的代码时出错
- 在主代码中调用 .hpp 函数时出错
- 将 find_if() 与数组一起使用的代码段中出错
- 我在字数C++的代码中哪里出错了
- 尝试从 Github 编译 OpenCV QT 代码时出错
- 编译创建 Eigen::ThreadPoolDevice 对象的代码时出错
- 编译 .cu 与 .cpp:即使没有任何 CUDA 代码,编译器也会出错