由MATLAB] .m文件生成动态链接库的方法说明
李知践
1 .把MATLA编译器(MATLAB Compl ier:mcc)集成到VC6.0中第一步在安装MATLAB寸要安装MATLA%译器(MATLAB Compl ier )。
第二步在M AT LA临令提示符>>或者D O S命令框中键入命令mex -setup
进行编译环境选择 VC6.0O
第三步在M AT LA临令提示符>>或者D O S命令框中键入命令mbui ld -setup
进行编译环境选择 VC6.0O
第四步在M AT LA临令提示符>>键入命令prefd ir
显示用户preference 目录位置。
第五步在M AT LA临令提示符>>键入命令mccsavepath
然后将MATLAB勺work目录中的mccpat h文件拷贝到用户prefere nce目录中。 保存Compl ier的路径信息。
第六步如果使用的是Wi ndows98,要在你的config.sys文件中加入一行shel l=c:\command.com/e:32768/p
第七步在VC6.0的Tools->Customize->Add-ins and Macro选中MATLAB add-in forVisual Studio 。将会出现MATLAB add-in for Visual Studio工具栏。同时MATLAEB在VC6.0的Wizard中新增了一项 MATLAB Project Wizard
2.MATLAB Project Wizard的使用方法
第一步在VC6.0中选取Fi le->New->MATLAB Project Wizard 建立一个新项
目。^Cluster Resource[ype Wizard
^Custom A叩Wizard
■
矗IQAE Cjdcnsion V/iznrd r^Ms kefilc
TLAB Project Wizard
MFC ActiveXuontrol'A/iTard t*CiRate Ewwr通MFCAppWi加rd(dl l)gjMFC fAddtoGurrcnf
Tl Uti l ity Project
"Win32 ApplicationnWin32 Console Appl ication
OK第二步在MATLAB Project Wizard中选择项目的应用类型:
共有五种类型可供选择
C-MEX DLL
M-MEX DLL
Windows Console EXE
Share M-DLL
Simul ink C S-Function
选择Share M-DLL来建立Windows动态链接库。第三步选择.m文件
1 ihl-s i%thp autput Fran t imn PlMRI> clo^p this windnui aft-------------------------------tCC/MFX BFCTH ■ice -It F\M¥ tinCLlMENfS\11iX
m=r"_Genera ting Fi le ahi1-1 -11111- ti^nprating Fi le ,p111 .fr^ports&・n«MFtlngi fi "111 Hri l insl\FxMiitinigrnvwmci nhui 14gThisi 宰nfcmi 1 diCnpiyirighit侦
->ibei aultaptlnri isf i lerianr
■■■■■■一■一■■■■■■■」 ■■ ■—iM■■■■■■ .M.■
;-> Oplrinni Fi l?
-> CttHPILFR
-> Conpi L?rflags:
UUMPFEGS UP”懵1_础§btlJUHrLAUS Argijnrnt<Hmi iF^iritrh-> Pre-l inking ronnAnds
-> LUNKLN
> Link directiueg
LlMMHAGS LIWFI AGSPUST KamF dl irpcti UPFi le l inkdirectiUP Lib_l ink difEiztive R^p-Fi l^ indical-nr:-> R^«kOiJrep Cnepi l#r
-> R^saurcp I -|nk*i-
加入的.m文件和由它生成的C文件
第四步: 对VC6.0编译环境进行配置头文件、库文件的路径、链接导入的静态库。
Ed血r |Tabs|Debug|Compatibi l ity|Bui ld Di iedories|V/orksi |~7
Phtfurm: STiuw dire Tories fui;
|\Vi i iJi2 |Library fi le%
Hirectories 芒i X• 1
C^Ptoaram Fi lEs\Microsufl Visual Studio\VC^8\UB
.史;义峋迥MF.C'L旧. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
AILABbP5\tXrtRN\lr IMATI AR GP5\FXTE R N\l I R\WI N3?\M IRft 0 SO F1\M SVC
JJIl^JBI IItKl ll lBtJIIH IMU Iil ll«a l ll lBSJ II IJL^U IUlUaBI II LUIl ia#
O< Cancel导入C:\MATLAB6p5\extern\l ib\win32\microsoft\msvc60 中的静态库第五步:编译、链接建立动态链接库 DLL文
件。
Eatch Build.,.
Clean
Start Dabug
第六步若要在项目中添加新的 .m文件可作用MATLAB add-in for Visual Studio工具栏中的第一个按钮。
3.如何在白己的程序中使用.m文件生成的动态链接库
以C:\MATLAB6p5\toolbox\images\images\mean2.m 为例建立的项目名为mean2d。生成了mean2d.dl l文件和mean2d. l ib文件。
第一步如前面所述对VC6.0编译环境进行配置头文件、库文件的路径、链接导入的静态库。并在导入的静态库中添加 mean2d. l ib文件。
第二步在自己应用程序项目的头文件中加入以下代码
#include"matlab.h"extern "C"__declspec(dl l import)mxArray*mlfMean2(mxArray*x);extern "C"__declspec(dl l import)void mean2dnitial ize();extern "C"__declspec(dl l import)void mean2dTerminate();
第三步在要使用mean2函数的文件中加入以下代码
#include"matlab.h"
#include"matrix.h"
〃声名两矩阵并初始化m xArray*A,*b;
A=NULL;b=NULL;
//由D旧文件头信息得到图像的行列数int col=m_dibFile.m_lpBMIH->biWidth;int row=m_dibFile.m_lpBMIH->biHeight;
〃以图像行列数的大小建立矩阵A,8位无符号数
A=mxCreateNumericMatrix( row,col ,mxUINT8_CLASS,mxREAL);
〃建立一个标量b大小为2.0mlfAssign (&b,mlfScalar(2.0));
//将DIB文件的图像数据拷贝到矩阵Amemcpy(mxGetPr(A),m_dibFi le.m_lpImage,row*col*sizeof(BYTE));〃计算均值b=mlfMean2(A);
〃将结果拷贝出来
doublereslt;memcpy(&reslt,mxGetPr(b),sizeof(double));
〃销毁矩阵mxDestroyArray(A);mxDestroyArray(b);
〃显示结果
CString info;info.Format(”图象的均值为 f", reslt);
AfxMessageBox(info);
第四步在使用mean2函数的构造函数和析构函数中分别加入下列代码
〃在构造函数中mean2dnitial ize();
〃在析构函数中mean2dTerminate();
第五步将mean2d.dl l文件和mean2d. l ib文件拷贝到你的应用程序项目目录中。
第六步编译链接运行应用程序。
4.发布程序
在没有安装M AT LA曲计算机上 以上程序是无法正常运行的。好在 M AT LAB务其所有的运行库打包成了一个自解压文件。 C:\MATLAB6p5\extern\l ib\win32\mgl instal ler.exe
在没有安装MATLAB的计算机上运行mgl instal ler.exe 它解压出两个目录 bin和toolbox。你只要把bin\win32 加入到计算机系统变量 PATH中即可。
美得云怎么样?美得云好不好?美得云是第一次来推广软文,老板人脾气特别好,能感觉出来会用心对待用户。美得云这次为大家提供了几款性价比十分高的产品,美国cera 2核4G 15元/月 香港1核 1G 3M独享 15元/月,并且还提供了免费空间给大家使用。嘻嘻 我也打算去白嫖一个空间了。新用户注册福利-8折优惠码:H2dmBKbF 截止2021.10.1结束。KVM架构,99.99%高可用性,依托BGP...
柚子互联官网商家介绍柚子互联(www.19vps.cn)本次给大家带来了盛夏促销活动,本次推出的活动是湖北十堰高防产品,这次老板也人狠话不多丢了一个6.5折优惠券而且还是续费同价,稳撸。喜欢的朋友可以看看下面的活动详情介绍,自从站长这么久以来柚子互联从19年开始算是老商家了。六五折优惠码:6kfUGl07活动截止时间:2021年9月30日客服QQ:207781983本次仅推荐部分套餐,更多套餐可进...
ParkInHost主机商是首次介绍到的主机商,这个商家是2013年的印度主机商,隶属于印度DiggDigital公司,主营业务有俄罗斯、荷兰、德国等机房的抗投诉虚拟主机、VPS主机和独立服务器。也看到商家的数据中心还有中国香港和美国、法国等,不过香港机房肯定不是直连的。根据曾经对于抗投诉外贸主机的了解,虽然ParkInHost以无视DMCA的抗投诉VPS和抗投诉服务器,但是,我们还是要做好数据备...