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

时间:2013-12-13 15:39:38

标签: c++ fortran destructor

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

Fortran程序使用STOP命令退出。

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

1 个答案:

答案 0 :(得分:2)

要获得正确的构造/破坏,您只需要在C ++端使用入口点。

至少随便,我能想到的最简单的方法似乎完全有效:

  1. 在C ++中设置main,并将其作为入口点。
  2. 将您当前的Fortran入口点移动到一个函数中。
  3. 从main
  4. 调用该函数
  5. 在C ++中编写一个名为do_stop()的小函数,只抛出异常
  6. 在您的Fortran中
  7. ,用do_stop()调用替换STOP。
  8. 你可以保留未被捕获的异常,或者在main中有一个try/catch,这可以提供更优雅的退出(显示您选择的错误消息,而不是库作者写的说您的程序有的内容)错误)。