Matlab 版 (精华区)
发信人: seesea (马虎学究), 信区: Matlab
标 题: 科学计算软件的快速开发(dll的编译和调用)(转寄)
发信站: 哈工大紫丁香 (2002年03月13日21:42:23 星期三), 站内信件
发信人: GzLi (笑梨), 信区: Matlab
标 题: 科学计算软件的快速开发(dll的编译和调用)
发信站: 饮水思源 (2002年01月24日21:27:04 星期四), 站内信件
Visual C++中MATLAB Shared Dll的编译
在Visual C++的Wizard中选择MATLAB Project,然后选择"Visual MATLAB Application
Type"为"shared M-DLL"项,选择"Use Handle Graphics"为"Yes"。图1所示的MATLAB宏
工具条上选择m+项,在Project中添加m文件mydbtwo.m和mydbtwod.m。系统自动加入相关
的m工具箱函数,但是有一个dbwavf的函数需要手工添加,方法同上。选择编译,可以得
到相应的h头文件和lib静态函数库和dll动态文件库。然后复制到MFC Project下。
5 Visual C++中MATLAB Dll文件的调用
在MFC Project中调用MATLAB的Shared Dll需要先对Dll初始化,在调用结束还要声明中
断Dll的调用,如果Dll中的函数用到参数,要做相应的转换,本例中函数的参数是数据
的文件名,这个变量是C++中的字符串,调用MATLAB中的API函数mxCreateString来将Cs
tring类型的文件名转换为MATLAB变量。相关源代码如图所示。
添加头文件:
#include "mat.h"
#include "dbtwo.h"
……
在构造函数和解构函数中分别调用Dll文件的初始化和中止函数。
CWaveletDoc::CWaveletDoc(){
dbtwoInitialize(); // Dll的初始化文件
……
}
CWaveletDoc::~CWaveletDoc(){
dbtwoTerminate(); file://Dll的中止文件
……
}
在MFC Project中添加两个菜单,分别对应两个分析函数。
void CWaveletDoc::OnWatDb2()
{
mxArray *fn=mxCreateString(m_FN); // 将文件名转换为MATLAB变量
mlfMydbtwo(fn); // 调用一维信号的小波分析函数
mxDestroyArray(fn); // 释放变量内存
……
}
void CWaveletDoc::OnWat2Db2(){
mxArray *fn=mxCreateString(m_FN);
mlfMydbtwod(fn); file://调用二维图像的小波分析函数
mxDestroyArray(fn);
……
}
--
GzLi 如是说:
Joy and pain are coming and going both.
Be kind to yourself and others.
※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 211.80.38.29]
--
真理往往朴素,以致人们不相信它。
————列瓦尔特
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.120.9.14]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.380毫秒