找回密码
 立即注册
收起左侧

调用gfortran编译的Fortran动态链接库问题

3
回复
4452
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 2014-11-19 10:40:38 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
操作系统:window 8.1
编译器:mingw
qt版本:4.8.6

想用qt creator 调用gfortran编译的Fortran 动态链接库,Fortran动态库工程输出add.dll和libadd.a文件,怎么用隐式调用呢?我自己尝试写了一个dll.h头文件,并加到工程中,将libadd.a拷贝到工程目录下,add.dll拷贝到输出目录下,在.pro文件中加上了LIBS += add,可是编译出错,求解决!!!
附:Fortran程序subroutine getadd(a,b,c,d)
       implicit none
       !DEC$ ATTRIBUTES DLLEXPORT::getadd
       real(8) :: a
       real(8) :: b
       real(8) :: c
       real(8) :: d
       d=a+b+c
       write(*,*) d
end

//dll.h
#ifndef DLL_H#define DLL_Hextern "C"{extern void getadd_(double*, double*, double*, double*);}#endif // DLL_H
//调用过程
double a,b,c,d;
getadd_(&a,&b,&c,&d);
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2014-11-19 11:11:34 显示全部楼层
问题已解决!!!有遇到类似问题的可以贴后留言
回复 支持 反对

使用道具 举报

累计签到:1569 天
连续签到:1 天
2014-11-20 23:19:50 显示全部楼层
鼬之记忆 发表于 2014-11-19 11:11
问题已解决!!!有遇到类似问题的可以贴后留言

可以把解决方法贴出来分享。
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2014-11-21 09:40:04 显示全部楼层
好的。
可以不用.a文件。在.pro文件中LIB+=dll文件的完整路径,注意用“/”,不要用“\”;写一个头文件声明里面的函数,需要注意用extern "C"声明,而且,我用的gfortran编译的dll,导出的函数后面都要加上_,如add_();在要使用dll函数的源文件中加入头文件的包含,就可以直接使用了,注意要用函数的原型加上“_”,而且要用地址传递。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了