TA的每日心情 | 难过 2019-11-20 15:02 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在网上看了很多调用例子,全部都实现成功了,但是这些例子的fortran程序全都是用来计算实数的,我的fortran程序用来计算复数,程序如下
0 a( p! G* o% N subroutine test(c,a,b)
: Y* Y6 R/ p# ~0 N" i( S" h complex::a,b,c
( v% U5 `. @5 N1 }* E! M# G! t c=a+b; [2 M3 F' s# h! a. D$ |
end subroutine. J% \" Z) h4 {$ g
) F3 `, Q% O& }" U0 Z) x- j; v生成bcd.dll文件
: o$ Z1 t) U1 k" {头文件 abc.h 程序是 void test(double*,double*,double*);
3 P, a! B5 a+ f0 mmatlab的.m程序如下a=3;b=1024;c=0;
. u/ j: [! A7 T2 b; z4 l( u loadlibrary('bcd.dll','abc.h');2 R9 A4 r s) O1 f% o- {. @- R
w=calllib('bcd','test',c,a,b);8 L. {% f1 B3 x: k
unloadlibrary bcd- ?3 S7 E1 C, ]( V
运行以后,matlab直接崩溃,闪退或是提示libpointer不支持复数数据! f+ z \6 @$ `$ @" p
我要实现的是一非常复杂的fortran程序,包含10多个子程序,整个程序都在计算复数,之前试了混编mex,没有成功,最近才知道dll这种方法,但是最后实现起来不是崩溃就提示libpointer不支持复数数据,大家帮帮忙吧,看看哪里出了问题/ Y2 Y' q2 ?! r4 h/ u0 h
|
|