首先要在自己的matlab7.0上安装MEX和mBuilder,安装方法是在matlab命令窗口中输入mex-setup,按照一系列的步骤安装下去。然后再在命令窗口中输入mbuilder-setup,同样的方法就可以安装mbuilder。
打开一个空m文件,向里面写一个函数如下
function z= huatu();
fid = fopen('b.txt');%打开空文件
[A,count] = fscanf(fid,'%d',inf);%向空文件里读数据
fclose(fid);%关闭txt文件
z = sin(A);
fid = fopen('xxx.txt','w');%打开一个txt文件,向里面读数据
for i=1:3
fprintf(fid,'%d ',z(i));
end
fclose(fid);
然后将其用m文件的格式保存。随后在matlab7.0的命令窗口打入命令mcc -W cpplib:dllname
-T link:lib filename.m
其中filename.m是刚才保存的那个m的文件名,dllname是要生成的新文件的dll文件名,这个自己可以随便取名,我们将上述的程序设为mcc -W cpplib:dllhuatu
-T link:lib a.m。回车后会在matlab的work目录下生成一些列的文件,我们只要其中四个文件:dllname.dll,
dllname.ctf, dllname.lib, dllname.h 是我们需要的。
在vc6.0中新建一个工程,并新建打开一个c++ source
file。向其中写入一个c代码,这是测试刚才在matlab中写的函数
#include
#include "dllhuatu.h"
#include "mclmcr.h"
main(){
mclInitializeApplication(NULL,0);
dllhuatuInitialize();
mwArray
MA(1,1, mxDOUBLE_CLASS);
huatu(0,MA);
dllhuatuTerminate();
mclTerminateApplication();
}
编译,运行之前,需要进行一下设置。把在matlab中work下的那个四个文件dllhuatu.dll,
dllhuatu.ctf, dllhuatu.lib,
dllhuatu.h拷贝到vc6.0新建的工程目录下,并将dllhuatu.h添加到头文件列表中。
在vc菜单Tools→Options→Directories→Show directories for: include
files添加
root>\Extern\include.
再在Tools→Options→Directories→Show directories for: Library添加
root>\Extern\Lib\Win32\Microsoft\msvc60
经过上面的设置后。下面添加静态库lib文件与头文件,添加方法如下Project→Setting→Link→Category:
input→Object/library modules 添加 mclmcrrt.lib dllhuatu.lib
这样Vc6.0和matlab7.0的连接就基本上成功了,再有就是在c代码中的头文件添加dllhuatu.h。如果matlab中是打开一个文件或是其他,要把这个文件也拷贝到c的工程目录下。