加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

利用Matlab自带工具箱生成Dll和EXE文件

(2010-12-09 18:24:13)
标签:

matlab

deploytool

exe

编译器

dll

校园

分类: Matlab

想到后期开发需要用到matlab与vb或者其他语言进行编程操作,边想着如何利用matlab强大的功能,而又脱离其软件本身进行开发。利用DLL文件与VB混编进行开发是方法之一。

本以为是一个很简单构建过程,不过还是在不经意间浪费了两天时间。回顾整个安装过程,主要还是没有对整体进行构建,没有借鉴前人的经验啊。。。

 

构建过程中遇到很多问题。这里简单总结一下安装过程,顺便把Matlab生成dll文件,以及打包生成EXE文件的过程做一下介绍。

我的版本好为:MATLAB R2009a

一、生成独立可执行的程序(dll and exe文件)步骤
    1、安装编译器。可有多种选择,本机安装的是Microsoft Visual C++ 6.0(必须装);
    2、设置编译器。在matlab命令行输入mbuild -setup,选择安装的编译器为Microsoft Visual C++ 6.0;

这里需要的注意的是,编译器路径,编译文件路径的选择,我选择的都是与Microsoft Visual C++ 6.0相关的默认文件夹。在看到Done字样后,开始在Matlab中设置编译参数。 

http://s16/bmiddle/4d4afb6d496f889caabbc&690


3、输入deploytool命令(其他版本可能为matcom等),出现以下界面:

http://s2/bmiddle/4d4afb6d496f7efdeb6c1&690

 

4、设置相关的参数。这里可以做很多操作,如图所示,最终结果可生成可供VB调用的dll文件。

http://s7/small/4d4afb6d496f7f016e9e6&690

 

启动deploytool后将主程序放到main function里,其他子程序放到other files里,如果有c程序,则放到c/c++ files里.加入你想要编译的m文件,(要加入到自己命名的主目录下,如果还有其他非m文件,放到other files里面)按下编译器就可以编译了.

http://s2/bmiddle/4d4afb6d496f7ff89b8b1&690


编译完成后会,就会在当前目录下生成这两个文件夹distrb src

 

5、编译的最终结果如下图所示.另外,进行打包操作.我选择了Matlab Compiler编译出可直接运行的EXE文件。如图所示,为调用一个m文件,运行后生成波形分解图。

打包过程中会自动将MCRInstaller.exe拷贝到distrib文件夹下,并生成一个bat文件,点击此文件,进行安装软件操作。并自动安装MCRInstaller.exe,此文件为matlab的运行环境。\distrib 下的proname_pkg.exe文件就是安装文件。

http://s2/bmiddle/4d4afb6d496f80d58ab91&690



二、 安装过程中的几个主要问题:
1、mbuild -setup编译环境的设置问题。
2、matlab的版本问题,网上有很多解决方案,但是没一个版本的解决方法是不同的,注意版本和问题一起搜索。
3、编译环境,一定要注意,VC一定要先安装好,不然设置一直会出错。

Error: An error occurred while shelling out to mbuild (error code = 1).
Unable to build executable (specify the -v option for more information).
??? Error using ==> mcc
Error executing mcc, return status = 1.

4、最后出现了一个小问题,系统环境变量设置的变化。

'cmd' 不是内部或外部命令,也不是可运行的程序或批处理文件。

细看错误提示,估计是环境变量的问题(由于某些原因,环境变量可能被改变或者丢失),于是在系统变量列表中找到变量Path,对它进行编辑,把它的值添加这个:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有