Matlab 版 (精华区)

发信人: zjliu (fly), 信区: Matlab
标  题: 有关matlab与vc混合编程
发信站: 哈工大紫丁香 (Mon Jul  8 19:04:27 2002) , 转信

发信人: hahama (hahama), 信区: Matlab
标  题: 有关matlab与vc混合编程
发信站: 风铃屋 (2002年03月30日01:45:56 星期六), 站内信件

 作者  chang (双子星~山顶洞三号)
 看板  Matlab
 标题   matlab&vc(1)

时间  【真情流露】Fri Jan 11 15:34:00 2002

————————————————————————
———————————————




对于转换.m文件到c或cpp,现在我所知有两种常用方法

一是通过matlab自代的编译器mcc(5.1就有的),另一个是通过matcom
(MIDEVA),而我
常用的为后者。两者比较各有优势,对于后者来说,
我有以下几点体会:

标  题: 有关matlab与vc混合编程
发信站: 风铃屋 (2002年03月30日01:45:56 星期六), 站内信件

 作者  chang (双子星~山顶洞三号)
 看板  Matlab
 标题   matlab&vc(1)

时间  【真情流露】Fri Jan 11 15:34:00 2002

————————————————————————
———————————————




对于转换.m文件到c或cpp,现在我所知有两种常用方法

一是通过matlab自代的编译器mcc(5.1就有的),另一个是通过matcom
(MIDEVA),而我
常用的为后者。两者比较各有优势,对于后者来说,
我有以下几点体会:

1.使用方便,在matcom集成环境中可以进行转换、
编译、调适、执行等

2.运行速度比用mcc转换的略快,2-10倍不等,
可以生成独立执行的exe,dll并且生成
  对应的cpp文件

3.我最喜欢的
做法是在C编译器中直接用MIDEVA的语法调用matlab函数,与C混编

因为MIDEVA的语句形式基本与matlab上的写法一样,所以就和直接在
matlab上
    写差不多,然后用C编译器编译就行了,
(如在VC,C++Builder,BC等)这就省去了
      转换这个环节。

4.当然这种方法也有不足,绘图没有mex的精致,matlab的一些功能
尚未完全实现,
  另外对于工具箱的支持也有限,因为我没有试过,
所以具体还需应用后才能下结论
可以用VC生成dll的方法将m文件转为
可被vc调用dll;
1.使用方便,在matcom集成环境中可以进行转换、
编译、调适、执行等

2.运行速度比用mcc转换的略快,2-10倍不等,
可以生成独立执行的exe,dll并且生成
  对应的cpp文件

3.我最喜欢的
做法是在C编译器中直接用MIDEVA的语法调用matlab函数,与C混编

因为MIDEVA的语句形式基本与matlab上的写法一样,所以就和直接在
matlab上
    写差不多,然后用C编译器编译就行了,
(如在VC,C++Builder,BC等)这就省去了
      转换这个环节。

4.当然这种方法也有不足,绘图没有mex的精致,matlab的一些功能
尚未完全实现,
  另外对于工具箱的支持也有限,因为我没有试过,
所以具体还需应用后才能下结论
可以用VC生成dll的方法将m文件转为
可被vc调用dll;

1)用app wizzard生成一个VC dll工程;

2)利用VISIUAL MATCOM将m文件加入工程。

3)函数导入应写为extern "C++" _declspec(dllexport) .....

4)编译生成dll与lib。
5)在调用dll的VC工程中导入
extern "C++" _declspec(dllimport)并调用dll.

在以上过程中,应在需要用到Mm类的地方加入语句:
#include "matlib.h",同时应把v4
501v.dll加入工程。


1〉用matcom转换m文件成为c文件

[优点]:

1.可以脱离matlab环境,只需要加入1兆多的dll在程序里


1)用app wizzard生成一个VC dll工程;

2)利用VISIUAL MATCOM将m文件加入工程。

3)函数导入应写为extern "C++" _declspec(dllexport) .....

4)编译生成dll与lib。
5)在调用dll的VC工程中导入
extern "C++" _declspec(dllimport)并调用dll.

在以上过程中,应在需要用到Mm类的地方加入语句:
#include "matlib.h",同时应把v4
501v.dll加入工程。


1〉用matcom转换m文件成为c文件

[优点]:

1.可以脱离matlab环境,只需要加入1兆多的dll在程序里

 2.可以把曲线图放入vc的picture控件里面(这一点让程序看起来

          完全是我自己的产品)

 [缺点]:

1.出品该软件的公司已经被matlab的收买,以后用它没有前途

2.不支持matlab的某些功能,且某些方面功能不足

2〉用matlab转换m文件为c文件
   [我可以做到]

1.用matlab进行数值计算,vc调用计算结果,可以脱离matlab环境

2.用matlab进行画图,但是只能在console 应用程序里面,可以脱离
matlab
          环境

3.调用engine.h进行画图,发觉不能脱离matlab环境,
而且matlab主窗口也

 2.可以把曲线图放入vc的picture控件里面(这一点让程序看起来

          完全是我自己的产品)

 [缺点]:

1.出品该软件的公司已经被matlab的收买,以后用它没有前途

2.不支持matlab的某些功能,且某些方面功能不足

2〉用matlab转换m文件为c文件
   [我可以做到]

1.用matlab进行数值计算,vc调用计算结果,可以脱离matlab环境

2.用matlab进行画图,但是只能在console 应用程序里面,可以脱离
matlab
          环境

3.调用engine.h进行画图,发觉不能脱离matlab环境,
而且matlab主窗口也

 会打开

[我不能做到的,也是我最想能做到的]

把matlab函数画的曲线图能够放入picture控件里面

这样可以让我的程序看起来和matlab无关!


如何将Matlab集成入VC

1.安装matlab 6,VC6

2.在Matlab下运行mex -setup,按提示做

3.在matlab下运行mbuild -setup,按提示做

4.打开vc,new一个project,可以发现出现一种新的project类型:
matlab
project,选它

5.Matlab project wizard提示你需要一个m文件以生成project
 会打开

[我不能做到的,也是我最想能做到的]

把matlab函数画的曲线图能够放入picture控件里面

这样可以让我的程序看起来和matlab无关!


如何将Matlab集成入VC

1.安装matlab 6,VC6

2.在Matlab下运行mex -setup,按提示做

3.在matlab下运行mbuild -setup,按提示做

4.打开vc,new一个project,可以发现出现一种新的project类型:
matlab
project,选它

5.Matlab project wizard提示你需要一个m文件以生成project
,选择你要
编译的m文件,就OK了

6.Matlab project wizard将会把你的程序调用的所有Matlab
自带m文件一并
加入project。

7.为了编译通过,还需在VC的
Tools->options->Directories->include
files中加入

C:\MATLABR12\EXTERN\INCLUDE
以及Libary files中加入

 C:\MATLABR12\EXTERN\LIB\WIN32\MICROSOFT\MSVC60

 C:\MATLABR12\EXTERN\LIB\WIN32


同时在Project->setting->Link->Object/libary modules中加入

libmmfile.lib libmatlb.lib libmx.lib libmat.lib sgl.lib
,选择你要
编译的m文件,就OK了

6.Matlab project wizard将会把你的程序调用的所有Matlab
自带m文件一并
加入project。

7.为了编译通过,还需在VC的
Tools->options->Directories->include
files中加入

C:\MATLABR12\EXTERN\INCLUDE
以及Libary files中加入

 C:\MATLABR12\EXTERN\LIB\WIN32\MICROSOFT\MSVC60

 C:\MATLABR12\EXTERN\LIB\WIN32


同时在Project->setting->Link->Object/libary modules中加入

libmmfile.lib libmatlb.lib libmx.lib libmat.lib sgl.lib
标  题: 不知MATLAB5.3与6.0有什么区别
发信站: 风铃屋 (Sat Mar 30 15:19:50 2002)


我买了6.0
学校机房装的是5.3
--

※ 来源:.风铃屋 http://bbs.ysu.edu.cn [FROM: 202.206.242.151]

















--

※ 来源:.哈工大紫丁香 http://bbs.hit.edu.cn [FROM: 202.118.229.86]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.816毫秒