vc只能调用matlab子函数,VC调用matlab函数
最近在学习matlab,先试一个VC调用matlab函数的简单例子
用的是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工程
怎么设置都在链接上看得到。
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函数相关推荐
- Delphi中MDI窗体调用MDI子窗体Delphi中MDI窗体调用MDI子窗体,怎么调用
先定义一个函数 private function FindForm(caption: string): bool; { Private declarations } public { Public d ...
- matlab子函数相互调用吗,matlab主函数如何调用子函数
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2021/03/18 18:00:53 matlab主函数如何调用子函数 我编写了一个matlab子函数是关于龙格库塔计算的 主函数内容为: fo ...
- Matlab基础 主函数与子函数的调用关系
% 主函数与子函数调用规则 % 主函数能够调用子函数,子函数能调用子函数,但子函数不能调用主函数 %例子function s=myfun % 文件名myfun.m num=input('输入一个正整数 ...
- VC++中多线程学习(MFC多线程)一(线程的创建、线程函数如何调用类成员呢?如何调用主对话框的成员?、MFC中的工作线程和界面线程的区别)
这里废话不多讲了,因为项目原因,需要开启线程进行处理,在不了解线程的情况下,直接百度一下,然后就使用了,结果可想而知,出现了异常,所以花了一天时间系统学习一下多线程,这里主要是针对win32编程方面的 ...
- C++ 接口 函数导出_Matlab与C/C++混合编程、Visual C++与Matlab封装库互相调用相关要点...
[版本说明] Visual Studio 2010 Matlab2014a 64bit Windows7 64bit 以下是我安装的 Matlab2014a 支持的 C++混合编译器的SDK版本(为了 ...
- matlab定义和调用函数m,Matlab学习-自定义函数与调用
Matlab的自定义函数与调用 网上关于这方面内容应该比较全,这里只简单介绍常用的2种方法: 1.在一个.m文件中定义函数,然后在命令文件中调用 新建一个.m文件后,在里面定义函数按照以下方法: fu ...
- 如何在MATLAB中调用(运行)“用Python写成的函数或脚本”
如何在MATLAB中调用"用Python写成的函数或脚本",首先要确保MATLAB知道咱们的Python解释器的位置在哪里. 如果安装了Python的时候把Python加入了系统环 ...
- 慕课matlab学习 第三章-017 函数文件的定义和调用
第三节 程序流程控制 06-用函数文件的定义与调用 % 第三节 程序流程控制 % 06-用函数文件的定义与调用% 函数文件的基本结构 % function输出形参表=函数名(输入形参表) % 注释说明 ...
- matlab怎么调用主函数,Matlab中一个函数调用另外一个函数的操作步骤
原创Matlab中一个函数调用另外一个函数的操作步骤 编辑:小安 来源:PC下载网时间:2019-11-18 13:27:35 最近很多伙伴才刚刚安装入手Matlab这款软件,而本节就重点介绍了关于M ...
最新文章
- php时间相减_请教一个PHP的时间戳转换成时间相减的問題?
- Bada学习-Privileged API
- Oracle常用操作之登录名和密码大小写问题
- 让iis支持下载apk,ipa文件
- 群晖ffmpeg_群晖Video station支持DTS和EAC3
- 模拟jQuery,简单仿写API
- [swift] LeetCode 234. Palindrome Linked List
- 眼手组合-眼低手低者
- Android开发/源码资源汇总
- FPGA智能网卡-HairPin功能
- 优麒麟桌面闪烁_优麒麟 19.10 正式发布—百尺竿头,更进一步
- EtherCAT之TwinCAT3安装、使用
- js代码在调试状态执行正确,但是正常使用时没有反应
- 求两个数的最大公约数(C++)
- 怎么更改电脑桌面文件存放路径
- C语言——数组练习题
- 智能车竞赛技术报告 | 全向行进组 - 东北林业大学- 进取号E
- 半球展开图_新手入门如何学习钣金放样展开,老师傅分享篇(二)!
- 做到这一点,你也可以成为优秀的程序员
- Android面试题中高级,androidframework视频
热门文章
- web前端涉及到的软件
- /*1. 查询SC表中的全部数据。*/ SELECT * FROM SC /*2. 查询计算机系学生的姓名和年龄。*/ SELECT Sname,Sex FROM Student WHERE Sd
- SEOer在创业团队6个月的故事
- 五大经典算法(贪婪、动态规划、分治、回溯、分支限界法)及其联系和比较
- 纯CSS3制作漂亮的价格表
- Delphi基本数据类型(内置数据类型)
- 计算机专业夏令营英语面试范文,夏令营面试英语自我介绍
- Kafka的点对点模式、发布订阅模式、基础架构
- 脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?
- 蓝桥杯 基础练习 高精度加法 C++