c++ - 确保从 Fortran 应用程序调用 C++ 析构函数

标签 c++ fortran destructor

我们有一个调用许多 C++ 模块的大型 Fortran 应用程序。我正在尝试使用 C++ 对象的析构函数来释放资源和关闭文件,但是当 Fortran 程序退出时它们似乎没有被调用。

Fortran 程序使用 STOP 命令退出。

我是否需要使用不同的 Fortran 命令退出,或者从 Fortran 调用 C++ exit(0) 命令?

最佳答案

要获得正确的构造/破坏,您只需要入口点位于 C++ 端即可。

至少,我能想到的最简单的方法似乎很可能是这样的:

  1. 在 C++ 中设置 main,并将其作为入口点。
  2. 将您当前的 Fortran 入口点移到一个函数中。
  3. 从主函数调用该函数
  4. 用 C++ 编写一个名为 do_stop() 的小函数,它只会抛出一个异常
  5. 在您的 Fortran 语言中,将 STOP 替换为对 do_stop() 的调用。

您可以不捕获异常,或者在 main 中使用 try/catch,这样可以更优雅地退出(显示您选择的错误消息而不是库编写的内容作者说你的程序有错误)。

关于c++ - 确保从 Fortran 应用程序调用 C++ 析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20570320/

相关文章:

C++11 析构函数 = 删除

c++ - Visual Studio 错误 D8016 : '/ZI' and '/O2' command-line options are incompatible

c++ - QFont 不允许手动设置行距或行距

c++ - TensorFlow C++ 中用于 feed_dict 的语法是什么?

c - 将多维 C 数组传递给 FORTRAN 函数进行修改

构造函数中的 C++ 二维数据数组 - 何时初始化和删除?

c++ - CUDA:处理不同大小的数组

compilation - nagfor 预处理器的用户定义错误

fortran - .or 的遗留代码使用

javascript - JS字符串解构: rest parameter returning inconsistent data