matlab fortran 文件,matlab 调用fortran生成DLL

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

版本:matlab 2010b,vs2008+IVF11.0

对于简单的问题,例如求个c=a+b的,用vs2008+IVF11.0生成DLL和用matlab调用没什么问题,如下:fortran代码:

subroutine add(x,y,z)

!DEC$ ATTRIBUTES C,DLLEXPORT :: add

!DEC$ ATTRIBUTES REFERENCE ::z !返回值,传地址

implicit none

integer::x,y

integer::z

z=x+y

end subroutine

然后编译成DLL文件

对应的matlab 调用代码如下:

clear all

clc

warning off %#ok

loadlibrary(*test.dll*, *test.h*); %******加载dll及对应的头文件*********

x=0;

A=calllib(*test*, *add*, 5,3,x);%****matlab里的calllib函数返回******

disp(*结果是*);disp(A)

unloadlibrary test

结果当然是3+5=8了,test.h头文件内容为:void add(int,int,int*);

%=======================================

%=======================================

现在问题来了,如果我要求一个矩阵的逆,用的是fortran自己的IMSL库里的函数,VS2008并没有IMSL库,因为用是的IVF,以前的CVF编辑器有,所以下载安装了一个,变量路径也设置了,然后就是fortran代码:

subroutine GJ_inv (A,n)

use imsl

!DEC$ ATTRIBUTES C,DLLEXPORT :: GJ_inv

integer n

double presicion A(n,n)

A=.i.A

end subroutine GJ_inv

在这里,编辑不通过,说是 imsl 路径不对

问题:对于要调用IMSL库的,如何编写?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值