目前我正在研究一个需要将fortran代码集成到C++的项目。在Fortran模块中声明了很多变量和数组。当相应的fortran声明为real * 8 rmax且模块的名称为common_area时,我可以通过将c变量声明为extern double common_area_mp_rmax_来访问c中的整型,浮点型和双精度类型。但是,当我尝试对数组做同样的操作时,我得到错误。从C++访问fortran模块的变量
假设FORTRAN模块中的代码是: 真实* 8,分配,尺寸(:,:我cretaed AC双指针,:) :: X
为:
extern "C" { double* common_area_mp_x_; }
现在当我编译整个项目时,它说“variable_area_mp_x_'的多重定义”。我正在使用CMake来编译整个项目。 有人可以解释我做错了什么吗?我是fortran的新手,我很难解决这个问题。我感谢你的时间和帮助。
感谢, 精神狂欢
缺少'extern'? –
实际上我没有用C语言声明extern。我只是编辑并减少这种困惑..谢谢.. – mindbender
由于它只是一个基本变量(不是结构,函数或类),所以如果需要,也许可以在头文件中省略double * common_area_mp_x_',然后在引用该变量的C++文件中声明'extern double * common_area_mp_x_'。 –