最近在学习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函数相关推荐

  1. Delphi中MDI窗体调用MDI子窗体Delphi中MDI窗体调用MDI子窗体,怎么调用

    先定义一个函数 private function FindForm(caption: string): bool; { Private declarations } public { Public d ...

  2. matlab子函数相互调用吗,matlab主函数如何调用子函数

    来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2021/03/18 18:00:53 matlab主函数如何调用子函数 我编写了一个matlab子函数是关于龙格库塔计算的 主函数内容为: fo ...

  3. Matlab基础 主函数与子函数的调用关系

    % 主函数与子函数调用规则 % 主函数能够调用子函数,子函数能调用子函数,但子函数不能调用主函数 %例子function s=myfun % 文件名myfun.m num=input('输入一个正整数 ...

  4. VC++中多线程学习(MFC多线程)一(线程的创建、线程函数如何调用类成员呢?如何调用主对话框的成员?、MFC中的工作线程和界面线程的区别)

    这里废话不多讲了,因为项目原因,需要开启线程进行处理,在不了解线程的情况下,直接百度一下,然后就使用了,结果可想而知,出现了异常,所以花了一天时间系统学习一下多线程,这里主要是针对win32编程方面的 ...

  5. C++ 接口 函数导出_Matlab与C/C++混合编程、Visual C++与Matlab封装库互相调用相关要点...

    [版本说明] Visual Studio 2010 Matlab2014a 64bit Windows7 64bit 以下是我安装的 Matlab2014a 支持的 C++混合编译器的SDK版本(为了 ...

  6. matlab定义和调用函数m,Matlab学习-自定义函数与调用

    Matlab的自定义函数与调用 网上关于这方面内容应该比较全,这里只简单介绍常用的2种方法: 1.在一个.m文件中定义函数,然后在命令文件中调用 新建一个.m文件后,在里面定义函数按照以下方法: fu ...

  7. 如何在MATLAB中调用(运行)“用Python写成的函数或脚本”

    如何在MATLAB中调用"用Python写成的函数或脚本",首先要确保MATLAB知道咱们的Python解释器的位置在哪里. 如果安装了Python的时候把Python加入了系统环 ...

  8. 慕课matlab学习 第三章-017 函数文件的定义和调用

    第三节 程序流程控制 06-用函数文件的定义与调用 % 第三节 程序流程控制 % 06-用函数文件的定义与调用% 函数文件的基本结构 % function输出形参表=函数名(输入形参表) % 注释说明 ...

  9. matlab怎么调用主函数,Matlab中一个函数调用另外一个函数的操作步骤

    原创Matlab中一个函数调用另外一个函数的操作步骤 编辑:小安 来源:PC下载网时间:2019-11-18 13:27:35 最近很多伙伴才刚刚安装入手Matlab这款软件,而本节就重点介绍了关于M ...

最新文章

  1. php时间相减_请教一个PHP的时间戳转换成时间相减的問題?
  2. Bada学习-Privileged API
  3. Oracle常用操作之登录名和密码大小写问题
  4. 让iis支持下载apk,ipa文件
  5. 群晖ffmpeg_群晖Video station支持DTS和EAC3
  6. 模拟jQuery,简单仿写API
  7. [swift] LeetCode 234. Palindrome Linked List
  8. 眼手组合-眼低手低者
  9. Android开发/源码资源汇总
  10. FPGA智能网卡-HairPin功能
  11. 优麒麟桌面闪烁_优麒麟 19.10 正式发布—百尺竿头,更进一步
  12. EtherCAT之TwinCAT3安装、使用
  13. js代码在调试状态执行正确,但是正常使用时没有反应
  14. 求两个数的最大公约数(C++)
  15. 怎么更改电脑桌面文件存放路径
  16. C语言——数组练习题
  17. 智能车竞赛技术报告 | 全向行进组 - 东北林业大学- 进取号E
  18. 半球展开图_新手入门如何学习钣金放样展开,老师傅分享篇(二)!
  19. 做到这一点,你也可以成为优秀的程序员
  20. Android面试题中高级,androidframework视频

热门文章

  1. web前端涉及到的软件
  2. /*1. 查询SC表中的全部数据。*/ SELECT * FROM SC /*2. 查询计算机系学生的姓名和年龄。*/ SELECT Sname,Sex FROM Student WHERE Sd
  3. SEOer在创业团队6个月的故事
  4. 五大经典算法(贪婪、动态规划、分治、回溯、分支限界法)及其联系和比较
  5. 纯CSS3制作漂亮的价格表
  6. Delphi基本数据类型(内置数据类型)
  7. 计算机专业夏令营英语面试范文,夏令营面试英语自我介绍
  8. Kafka的点对点模式、发布订阅模式、基础架构
  9. 脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?
  10. 蓝桥杯 基础练习 高精度加法 C++