matlab程序生成.dll,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庫的,如何編寫?
總結
以上是生活随笔為你收集整理的matlab程序生成.dll,matlab 调用fortran生成DLL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 结束oracle import,Orac
- 下一篇: NET Core微服务之路:让我们对上一