在 QtCreator 中从 Qt 调用 fortran 代码

Posted

技术标签:

【中文标题】在 QtCreator 中从 Qt 调用 fortran 代码【英文标题】:Calling fortran code from Qt in QtCreator 【发布时间】:2014-01-26 11:00:16 【问题描述】:

我使用 QtCreator 设计了一个不错的 GUI,我想用它来调用 Fortran 源文件中的函数来完成所有后端工作。我的 QtCreator 版本是基于 Qt 5.0.1 的 2.7.0 我在一个名为 sum.f90 的文件中编写了一个简单的 fortran-90 程序来添加两个数字:

integer function addup (a, b)
implicit none
  integer a, b
addup = a + b
  return
end

然后我将这个 sum.f90 文件添加到 .pro 文件中,如下所示:

SOURCES += forsum.f90

然后我创建了一个包含以下行的头文件 fortranlink.h:

extern "C"

    extern int addup_(int*,int*);

然后我将这个头文件包含在我的主源文件“#include fortranlink.h”中,并像这样调用这个 addup_ 函数:

int a=2;
int b=3;
int result=addup_(&a,&b);

编译后出现以下错误:

Undefined reference to _gfortran_st_write
Undefined reference to _gfortran_transfer_character_write
Undefined reference to _gfortran_transfer_integer_write
Undefined reference to _gfortran_st_write_done

这些错误可能是因为我没有在某处使用 -lgfortran 链接标准 fortran 库。但是我在哪里使用它?

【问题讨论】:

LIBS += -lgfortran(刚刚用谷歌搜索)qt-project.org/forums/viewthread/19805 【参考方案1】:

@cageman 的回答是正确的。 LIBS+=lgfortran

【讨论】:

以上是关于在 QtCreator 中从 Qt 调用 fortran 代码的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ubuntu 中从终端运行 Qtcreator?

在 linux 中从 qt creator 运行 lupdate 和 lrelease 命令

在 qt creator 中从 ..qml 文件生成 .cpp 和 .h 文件

Q_INVOKABLE 是不是需要在 Qt5 中从 QML 调用公共 QObject 函数?

如何在 Qt DBus 调用中从 QDBusMessage 中提取返回的数据?

Hi3516开发笔记:在QtCreator开发环境中引入海思sdk的bsp包,运行显示Qt界面