小编Hac*_*ata的帖子

Fortran和C++的混合编程:Fortran不能调用C++子程序

最近,我正在做一个项目,其中一些 C++ 子例程被 Fortran 脚本调用(Fortran 求解器打算具有一些数据后处理功能,该功能来自用 C++ 开发的库)。以下过程重播错误产生过程。在这里,我使用非常简单的 Fortran 和 C++ 脚本进行简单明了的演示。

一个简单的 Fortran 主程序调用 CXX 子程序: CXX 子程序 - sub1.cxx:

    #include <stdio.h>
    using namespace :: std;
    extern "C" void func_c_();
    void func_c_()
    {
         printf("%d\n", 100);
    }
Run Code Online (Sandbox Code Playgroud)

Fortran 主程序 - sub2.f90:

    program func_fortran
          implicit none
          call func_c()
    end program func_fortran
Run Code Online (Sandbox Code Playgroud)

编译它们:

    g++ -c sub1.cxx
    gfortran -o test sub2.f90 sub1.o
Run Code Online (Sandbox Code Playgroud)

我们得到可执行文件 - 测试。到目前为止,没有问题。

然后我们将 sub1.cxx 替换为 sub1.1.cxx。看起来像:

    #include <iostream>
    using namespace :: std; 
    extern "C" void func_c_();
    void func_c_()
    {
         cout …
Run Code Online (Sandbox Code Playgroud)

c++ fortran

4
推荐指数
1
解决办法
148
查看次数

标签 统计

c++ ×1

fortran ×1