VC调用matlab函数
来源:互联网 发布:淘宝supreme正品吧 编辑:程序博客网 时间:2024/05/01 08:10
用的是VC++6.0,matlab7.8也就是matlabR2009
首先在matlab下设置环境
>> mbuild -setup
Please choose your compiler for building standalone MATLAB applications:
Would you like mbuild to locate installed compilers [y]/n? y
Select a compiler:
[1] Lcc-win32 C 2.4.1 in F:\MATLAB\R2009a\sys\lcc
[2] Microsoft Visual C++ 6.0 in F:\VC++6.0
[0] None
Compiler: 2
Please verify your choices:
Compiler: Microsoft Visual C++ 6.0
Location: F:\VC++6.0
Are these correct [y]/n? y
Done . . .
>> mex -setup
Please choose your compiler for building external interface (MEX) files:
Would you like mex to locate installed compilers [y]/n? y
Select a compiler:
[1] Lcc-win32 C 2.4.1 in F:\MATLAB\R2009a\sys\lcc
[2] Microsoft Visual C++ 6.0 in F:\VC++6.0
[0] None
Compiler: 2
Please verify your choices:
Compiler: Microsoft Visual C++ 6.0
Location: F:\VC++6.0
Are these correct [y]/n? y
Done . . .
**************************************************************************
**************************************************************************
1.然后设置系统路径。我的电脑->属性高级->环境变量->系统变量->Path选项,增加以下路径
C:\MATLAB7\extern\include:
C:\MATLAB\extern\lib\win32\microsoft\msvc60;
C:\MATLAB\bin\win32
ps: 使用时换成自己电脑上对应matlab的路径
2.做一个简单的M函数。文件名和函数名一致。
//文件名plot_test.m
function plot_test(result)
plot(result) %画图
3.在命令窗口敲deploytool(以前是comtool,在matlab7.8版本上没有这个命令),新建一个Comonent工程
我在这里给一个链接http://wenku.baidu.com/view/11b236b665ce0508763213c9.html
怎么设置都在链接上看得到。
4. 单击Project Files->Add File 添加plot_test.m文件
5.单击Bulid,编译连接该组件。在你matlab工程文件夹下会有distrib和src两个子文件夹。在src下plot_idl_i.c,有关于com和
com接口GUID。其中CLSID在VC中需要用到
6.打开VC,创建一个单文档MFC工程文件。命令plot。创建两个menu消息,一个获得接口指针,另一个画图
7.打开类向导。在Add Class,选中From a typed library ,进入C:\MATLAB\work\plot\src文件夹,选中plot_idl.tlb
文件。
8.在CplotApp的InitInstance()中
BOOL suc = AfxOleInit(); //初始化OLE
if (suc == FALSE)
{
::AfxMessageBox("初始化OLE失败");
}
其次 在CplotView中包含plot_idl.h math.h头文件。并定义常量PI,并从src下plot_idl_i.c中拷贝类GUID并复制到plotView.h
文件中
#include "test_matlabDoc.h"
#include "test_matlabView.h"
#include "test_idl.h"
#include "math.h"
#define PI 3.14169265
const CLSID CLSID_Test = {0x37604F6E,0xE76B,0x4490,{0x8D,0x5D,0x3B,0x40,0xD1,0xF9,0xAD,0xE9}};
ITest plot;
//ps:文件名取名不同,换成自己对应的即可
void CTest_matlabView::OnDrawPic()
{
// TODO: Add your command handler code here
//画图
const int N = 100;
double a[N];
double f = 50;
double Ts = 0.002;
for (int i = 0; i < N; i++)
{
a[i] = sin(2*PI*f*i*Ts);
}
VARIANT x;
VariantInit(&x);
x.vt = VT_ARRAY|VT_R8;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].cElements = N;
rgsabound[0].lLbound = 0;
x.parray = SafeArrayCreate(VT_R8, 1, rgsabound);
SafeArrayLock(x.parray);
x.parray->pvData = a;
plot.plot_test(x);
SafeArrayUnlock(x.parray);
}
void CTest_matlabView::OnInitOle()
{
// TODO: Add your command handler code here
//初始化ole
plot.CreateDispatch(CLSID_Test, NULL);
COleDispatchDriver();
}
- vc调用matlab函数
- VC调用MATLAB函数
- vc++调用matlab函数
- VC调用matlab函数
- VC中调用matlab函数
- VC中调用matlab函数
- VC中调用matlab函数
- VC中调用matlab函数
- VC中调用matlab函数
- VC调用matlab函数mclcppMlfFeval重复定义
- VC调用matlab函数mclcppMlfFeval重复定义
- 在VC++中调用matlab函数
- vc++调用matlab
- VC + + 调用Matlab API
- VC调用MATLAB
- VC调用MATLAB
- VC中调用Matlab
- vc调用matlab的dll
- SVN windows下开机自启动
- VC++ 2008 Express Edition + WDK + WTL 程序开发/[V]小布作品: WTL系列开发培训视频 - 2
- DATAGUARD failover切换及配置范例
- mysql 索引整理 - 普通索引
- java基础--输入与输出重定向(in,out,err的使用)
- VC调用matlab函数
- 1. 服务(Service)开发的纪律
- Oracle中的面向对象OOP
- linux 全文查找和替换
- 黑马程序员_java基础知识补充
- HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。
- 在windows下利用cygwin+Eclipse+NDK构建交叉编译环境攻略
- Java中的垃圾回收是如何工作的?(How Garbage Collection works in Java)
- poj 2777 Count Color 基础线段树,带给的初学者噩梦!!!