社区
资源
帖子详情
请问怎么在VC中调用MATLAB?
dark_zy
2002-11-29 11:43:48
我想实现的是直接用VC就可以编译链接CPP文件生成EXE文件,CPP里面包含了对matlab中的mwArray的调用
若嫌分数不够可以再多给,1000都行,只要能达到我的要求
...全文
1806
7
打赏
收藏
请问怎么在VC中调用MATLAB?
我想实现的是直接用VC就可以编译链接CPP文件生成EXE文件,CPP里面包含了对matlab中的mwArray的调用 若嫌分数不够可以再多给,1000都行,只要能达到我的要求
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
S_S_Ge
2010-06-05
打赏
举报
回复
顶一下
dark_zy
2002-11-30
打赏
举报
回复
approach()我已经按你的办法做好了
现在结帖
不知道你要多少分?
qing_li73
2002-11-30
打赏
举报
回复
And u can find more via the link below :
http://matlab_world.myetang.com/xdy_links.htm
qing_li73
2002-11-30
打赏
举报
回复
See the article below, FYI:
http://geocom.hhcc.net.cn/magz/wk0202/3.htm
approach
2002-11-30
打赏
举报
回复
http://bbs.njtu.edu.cn/cgi-bin/bbs/bbscon?IIS/M.1003114276.A=4
http://bbs.njtu.edu.cn/cgi-bin/bbs/bbscon?IIS/M.1003114477.A=5
http://bbs.njtu.edu.cn/cgi-bin/bbs/bbscon?IIS/M.1003114586.A=6
http://bbs.njtu.edu.cn/cgi-bin/bbs/bbscon?IIS/M.1003114670.A=7
----------------------------------------------------------------
http://passmatlab.myetang.com/matlab/file/p_25.htm
http://geocom.hhcc.net.cn/magz/wk0202/3.htm
approach
2002-11-30
打赏
举报
回复
标 题: Matlab6.1与VC6混合编程小结 --(1)编程环境设置
发信站: 饮水思源 (2001年10月23日10:24:51 星期二), 站内信件
Matlab6.1与VC6混合编程小结 ----1
wukui@ncu.edu.cn
一.编程环境
1. 开发时必需的文件
%Matlab%\extern 整个目录是开发的必需目录
%Matlab%\extern\include\*.h 目录
%Matlab%\extern\include\cpp\*.hpp 目录
%Matlab%\extern\lib\win32\*.lib目录
%Matlab%\extern\lib\win32\microsoft\msvc60\*.lib目录
2. VC6的设置
○1设置include搜索目录,
加入c/c++ math和c/c++ graphics的头文件
Tools->Options->Directories->Include files 中加入:
%Matlab%\extern\include\cpp\和%Matlab%\extern\include\
○2定义预处理宏MSVC、MSWIND
Project->Setting->C/C++页中的Category->Preprocessor
中加入 MSVC、MSWIND、
○3设置运行时动态链结库
Project->Setting->C/C++页中的Category->Code Generation
中选择Multithreaded DLL。
○4加入lib文件
Project ? Add to Project ?Files… 中加入:
%Matlab%\extern\lib\win32\microsoft\msvc60\*.lib 以及
%Matlab%\extern\lib\win32\libmatpm.lib
3. 运行时(发布)所需文件
%MATLAB%\extern\lib\win32\mglinstaller.exe 所生成的*.dll
――2001年9
月22日
--
※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 210.35.242.218]
发信人: wukui (wukui), 信区: Matlab
标 题: Matlab6.1与VC6混合编程小结 --(2)调用C/C++ Math
发信站: 饮水思源 (2001年10月23日11:27:20 星期二), 站内信件
Matlab6.1与VC6混合编程小结 --(2)调用C/C++ Math Liabrary的函数
wukui@ncu.edu.cn
Matlab6.1与VC6混合编程的方式很多:
先介绍第一种(排名无先后):
直接调用Matlab 自带的C/C++ Math Liabrary的函数,
首先要按帖子(1)设置编程环境
另外:在Project->Setting->Link->input页中
的Ignore Library中加入LIBCMTD
下面不废话,给出一段例子,
{下面的例子在Win32 Console Application 中调试通过
其它的方式略有不同。}
……
#include "matlab.hpp" //C++方式
#include "matlab.h" //C方式
#include "stdlib.h" //std库函数头
……
double data[] = {1,2,3,4,5,6};
mwArray z(2,3,data); //初始化一个2*3的矩阵
mwArray c; //定义个矩阵类
try{
c = pinv(z); //调用C++ Math Liabrary的函数Pinv伪逆函数
}
catch(mwException &ex){
mwDisplayException(ex);
}
double *p;
p = mxGetPr(c.GetData()); //将结果赋于p数组,用C进一步处理
int i;
for(i=0;i<6;i++)
printf("%f ",p); //显示结果
……
――2001年9月22日
--
※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 210.35.242.218]
发信人: wukui (wukui), 信区: Matlab
标 题: Matlab6.1与VC6混合编程小结 --(3)以DLL方式调用M?
发信站: 饮水思源 (2001年11月12日09:42:54 星期一), 站内信件
Matlab6.1与VC6混合编程小结 --(3)以DLL方式调用M文件中的函数
wukui@ncu.edu.cn
Matlab6.1与VC6混合编程的方式很多:
用Matlab处理复杂的算法,用VC、VB甚至Delphi来处理GUI,比较爽。
以DLL方式调用M文件中的函数,就是重要的手段。
首先要按帖子Matlab6.1与VC6混合编程小结 (1)中所说的设置编程环境
下面不废话,给出一段例子,
:假设有M文件:mfile.m
其中有Function1、Function2……。
1:在Matlab6.x中使用命令:
mcc –B sgl –t –W libhg:a –T link:lib mfile
其中:a是相生成的dll文件的名字 a.dll
mfile是m文件的名字mfile.m
-B sgl 表示用到了Graphics库(在matlab中help MCC)
2:将生成的a.dll,a.lib,a.h放在工程目录下。
3:在工程中加入a.lib,并#include “a.h”。
4:按以下格式调用:
aInitialize(); //初始化
mlfFunction1(); //对应于Function1
mlfFunction2(); //对应于Function2
……
aTerminate(); //释放
注意:a.h中的函数的参数和返回值大多为矩阵形式,使用方法见贴(2)。
――2001年9月22日
--
※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 210.35.242.218]
approach
2002-11-30
打赏
举报
回复
VC++中使用MATLAB的C++数学库和MCC生成的程序
---- 转载于obase.163.net
0、简介
MATLAB5.3的提供了C/C++数学库,其中的C++数学库功能很强,使用它可以用类似MATLAB的语法编写C++程序,十分方便。虽然速度上仍然比手工C/C++程序慢,但是由此换来的高效的开发效率和可靠性往往是值得的。另外mcc命令可以将M文件转化为C或CPP文件,编译后可以脱离MATLAB运行,它们也是使用的C/C++数学库。
不过,MATLAB的数学库在开发时似乎倾向于编译独立的可执行程序,把VC、BC只是作为一个编译和连接的工具,而没有过多地考虑在VC、BC的集成环境下进行开发。这给我们带来了不便。
很多网友问起如何将MCC生成的C++程序嵌入到VC。最近对这个问题做了一下尝试,在这里做一个总结,请大家回去试试。这里只介绍VC的情况,用BC的网友就自己研究研究吧,估计是类似的。
1、设置项目编译选项
首先建立一个新的项目,或者打开一个已有的项目,然后选择菜单:
Project->Settings->C/C++
Category:Preprocessor
Preprocessor definitions:
添加: MSVC,IBMPC,MSWIND
Category: Precompiled Headers
选择: Automatic use of precompiled headers
Through header: stdafx.h
2、调设置项目连接选项
首先要从下面几个函数定义文件(*.def)生成相应的导入库文件(*.lib)
libmmfile.def
libmcc.def
libmatlb.def
libmx.def
libmat.def
它们位于目录c:\matlab\extern\include
用下面命令导出库文件:
lib /def:libmmfile.def /out:libmmfile.lib /machine:ix86
lib /def:libmcc.def /out:libmcc.lib /machine:ix86
lib /def:libmatlb.def /out:libmatlb.lib /machine:ix86
lib /def:libmx.def /out:libmx.lib /machine:ix86
lib /def:libmat.def /out:libmat.lib /machine:ix86
将它们放入你的项目连接选项
Project->Settings->Link
Category:Input
Object/library modules:
添加:libmatpm.lib libmmfile.lib libmcc.lib libmatlb.lib libmx.lib libmat.lib
注1: 中间是空格,不要加逗号
注2: libmatpm.lib是C++ MathLib的库,如果是只用C,就不用连接它了。
Ignore libraries:
添加: msvcrt.lib
注: 仅在Debug版本中需要。原因不明:P
以上的这些lib文件,我已经做好了,打了个包放在这里下载:matlablibs.zip (64K)
3、设置编译环境
Tools->Options->Directories
Include fiels添加:
c:\matlab\extern\include
c:\matlab\extern\include\cpp
Library fiels添加:
c:\matlab\extern\lib
c:\matlab\extern\include
注:下面这个目录是那些lib所在的地方。
如果都挪到上面的目录,这个自然就不要了。
4、编写程序
用MCC命令生成的CPP文件和自己手工编写的CPP文件, 其项目设置是完全相同的,
程序的语法原则上也是一样的. 只是MCC生成的CPP文件有大量"没用"的代码.
(1)添加自己编写的程序模块
用下面文件头:
#include "stdafx.h"
#include "matlab.hpp"
然后, 按照C++ MathLib文档要求的格式书写程序.
(2)嵌入mcc生成的文件
在MATLAB下用下面格式的命令生成cpp文件
mcc -t -L Cpp test
得到test.hpp, test.cpp
将test.cpp加入项目, 不做任何改动.
最后,摁F7编译就可以了。
5、实例
上面罗罗嗦嗦一大堆,肯定让你打哈欠了:P
没关系,其实还是挺简单的,这里有个VC的project,用C++数学库解决了一个幼儿园的算术题,下载回去看看吧,马上就明白了。
MccDemo.zip (68K)
这里先说明一下:
MATLAB程序test.m:
function [sum, prod]=test(x,y)
sum = x+y;
prod = x*y;
用来计算两个数的和与积。注意这是两个返回变量的情况。
另外,x,y当然可以是数组。
用mcc命令生成了test.hpp和test.cpp。
文件demo.cpp:
#include "stdafx.h"
#include "matlab.hpp"
#include "test.hpp"
void mccDemo()
{ CString str;
mwArray x, y, sum, prod;
double dx,dy,dsum,dprod;
x = 5.0;
y = 10.0;
sum = test(&prod, x, y);
dx=x(1,1);
dy=y(1,1);
dsum=sum(1,1);
dprod=prod(1,1);
str.Format("%f+%f=%f\n%f*%f=%f", dx,dy,dsum,dx,dy,dprod);
AfxMessageBox(str);
}
由于采用了C++数学库,语法很简单。注意数组的赋值、其中数据的存取,这些都要仔细地看手册。
最后是跳出一个消息框,显示计算结果。
改程序启动之后,选择菜单mcc->demo即可。
在
VC
中
调用
MATLAB
在
VC
中
调用
MATLAB
在
VC
中
调用
MATLAB
在
VC
中
调用
MATLAB
vc
6
调用
matlab
编译的com组件示例1
vc
6通过代码
调用
matlab
编译生成的com组件 mfile -> com组件 ->
vc
6 exe
用
VC
#.NET开发交互式CAD系统
用
VC
#.NET开发交互式CAD系统,包括结合GDI+和OPENGL两种方案。 联系平台客服可开发票。
VC
中
调用
MATLAB
的5个例子
VC
中
调用
MATLAB
的5个例子 learn through example is very common and express for beginner,god bless you my griend!
VC
中
调用
MATLAB
示例代码
visual c++
VC
中
调用
MATLAB
示例代码.zip
资源
2,586
社区成员
18,441
社区内容
发帖
与我相关
我的任务
资源
VC/MFC 资源
复制链接
扫一扫
分享
社区描述
VC/MFC 资源
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章