TA的每日心情 | 难过 2019-11-20 15:02 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在网上看了很多调用例子,全部都实现成功了,但是这些例子的fortran程序全都是用来计算实数的,我的fortran程序用来计算复数,程序如下
7 P8 E+ c* k5 J+ |+ F subroutine test(c,a,b) ! \) _ H5 _1 V$ ^$ [
complex::a,b,c
, F" ?! z. P, }; u. x c=a+b
6 w E4 ^# ~* ^: ^& {" m3 e) @ end subroutine
$ r7 ]5 \* f5 i: J4 S( f7 T( e3 n; {% e8 [0 `- T
生成bcd.dll文件
1 e" h9 p; f; m头文件 abc.h 程序是 void test(double*,double*,double*);0 f- ^$ W# v: y8 {% b. H
matlab的.m程序如下a=3;b=1024;c=0;/ U6 Q0 b1 ?8 \& W f
loadlibrary('bcd.dll','abc.h');( c- E9 h3 A. |) h' J/ @
w=calllib('bcd','test',c,a,b);$ J0 U5 S2 M l% t$ Q: r/ H
unloadlibrary bcd
- q- y' A+ v& A& `2 ^% z' N运行以后,matlab直接崩溃,闪退或是提示libpointer不支持复数数据
, M/ e! o- g3 r* `$ h我要实现的是一非常复杂的fortran程序,包含10多个子程序,整个程序都在计算复数,之前试了混编mex,没有成功,最近才知道dll这种方法,但是最后实现起来不是崩溃就提示libpointer不支持复数数据,大家帮帮忙吧,看看哪里出了问题
7 H w( E5 {5 ^2 k1 g4 c |
|