vs2010下调用matlab2012b调试方法
Matlab代码调试技巧
Matlab代码调试技巧在科学计算领域,Matlab是一款功能强大的软件工具,广泛应用于数据分析、图像处理、数值模拟等众多领域。
然而,编写和调试Matlab代码并不总是一帆风顺。
本文将介绍一些Matlab代码调试的技巧,帮助开发者有效地解决问题,提高代码质量和性能。
一、使用断点调试断点调试是调试过程中最常用的方法之一,它允许开发者在代码的某一行设置断点,并在程序运行到该行时暂停执行,以便观察变量的值、调用堆栈等信息。
在Matlab中,可以通过在编辑器左侧的行号处单击设置断点,或者使用命令"dbstop"在代码中指定断点。
一旦程序运行到断点处,可以使用命令行窗口检查变量的值,或者逐步执行代码。
二、调试输出在调试过程中,输出语句是另一种有用的调试工具。
Matlab中的"disp"函数可以用于打印变量的值或调试信息。
通过在关键位置添加输出语句,可以追踪代码的执行流程,并监视变量的变化。
例如,以下代码段演示了如何使用输出语句调试一段计算平均值的代码:```matlabdata = [1, 2, 3, 4, 5];sum = 0;for i = 1:length(data)sum = sum + data(i);disp(['Current sum: ', num2str(sum)]);endaverage = sum / length(data);disp(['Average: ', num2str(average)]);```通过添加输出语句,我们可以观察每次迭代的累加和和最终的平均值,帮助我们找到代码中的错误并进行调试。
三、使用条件断点在某些情况下,我们只在满足特定条件时才希望暂停执行代码。
Matlab的条件断点功能可以在满足条件时触发断点。
通过在断点的设置菜单中选择"Edit Breakpoint Condition",我们可以指定一个条件,只有在该条件成立时才会中断程序执行。
VB调用MATLAB步骤
a = Val(Text1.Text)
b = Val(Text2.Text)
Call hh.myadd(1, c, a, b) 'myadd为MATLAB中的函数名,1为输出变量个数,c为输出变量定义为variant型,a,b为输入变量,定义为double型
Y=a+b;
VB程序如下:
Private Sub Command1_Click()
Dim hh As New ABC.ab 'ABC 为COMPONENT NAME,ab为class name
Dim a As Double ‘输入参数
Dim b As Double ‘输入参数
3.matlab会列出所有电脑上所有的编译器,选择Microsoft Visual C/C++ version 6.0
4.The default location for Microsoft Visual C/C++ compilers is C:\Program Files\Microsoft Visual Studio, but that directory does not exist on this machine
Use C:\Program Files\Microsoft Visual Studio anyway [y]/n? 选择n
5.Please enter the location of your compiler: [C:\Program Files\Microsoft Visual Studio] 键入vc++6的安装位置E:\INSTALLBACK\Microsoft Visual Studio vc6.0
解决matlab202b找不到编译器的问题
解决Matlab2012b找不到编译器的问题+解决补丁!matlab在关联编译器的时候,会出现找不到编译器的问题,原因是matlab要找windows sdk的mt.exe,找不到,必然报错. 因为vs2012在安装时,windows sdk的mt.exe位置变了,可能matlab还是按照老的路径找,肯定找不到(原来在windows sdks下面,现在在windows kits下面).matlab在关联编译器的时候,会出现找不到编译器的问题,原因是matlab要找windows sdk的mt.exe,找不到报错的.因为vs2012在安装时,windows sdk的mt.exe位置变了,而matlab还是按照老的路径找,肯定找不到(原来在windows sdks下面,现在在windows kits下面).如果你的环境是64位windows,并且vs2012装在默认目录下,matlab是64位版本,那么直接使用附件的文件,把他们添加到matlab/bin/win64下面的相关目录下即可,一个4个文件,放在2个目录.如果你的vs目录不是默认的,或者是32位版本,或者vs版本不是2012,那么需要修改附件里面的相关目录的设置(其实就是cl.exe和mt.exe的目录位置),我修改的方法是直接设置成目标目录(默认安装的位置),不是读注册表,这样简单,也无需修改注册表,以及建立什么目录链接(mklink).当然如果你的mt.exe目录不在Windows kits下,那需要修改附件的文件.附件里有一个word文件,是我修改的标识,当做帮助来用.使用方法,11 把附件相关的4个文件添加到matlab/bin/win64下面的2个相关目录2 在matlab里面运行mbuild -setup, 然后选y, 再选择2012的那个项目,再选y3 这是应该成功了4 mex -setup也是一样的.有一个奇怪的情况,就是.stp文件必须直接修改,我在桌面修改,然后覆盖到matlab目录后,其实并没有覆盖,还是原来的文件. 修改时要注意.大家从这下载解决补丁吧!How can I use Microsoft Visual C++ 2010 to create MEX files with MATLAB 7.10 (R2010a)?官网解决方案:Solution:The Microsoft Visual C++ 2010 compiler is not supported on the released version of MATLAB 7.10 (R2010a), but support can be added by installing a patch. To install the patch:1. Download the patch attached to this Solution. The patch includes files needed to support these combinations of MATLAB and Visual C++ 2010:?Visual C++ 2010 Professional and 64-bit MATLAB 7.10 (R2010a)?Visual C++ 2010 Professional and 32-bit MATLAB 7.10 (R2010a)? Visual C++ 2010 Express (Windows SDK 7.1 also required) and 64-bit MATLAB 7.10 (R2010a)? Visual C++ 2010 Express and 32-bit MATLAB 7.10 (R2010a)2. Launch MATLAB 7.10 (R2010a). If running on Windows Vista or Windows 7 run as administrator by right-clicking on the MATLAB shortcut and choosing "Run As Administrator". This permits modification of files in the MATLAB installation path.3. Confirm that you are running MATLAB 7.10 (R2010a). You can check this using the About box available at Help->About MATLAB.4. Unzip the contents of the patch into your MATLAB installation using the following command on the MATLAB command window.unzip(path_to_zip_file, matlabroot);This command will automatically unzipped the files in the correct folder and you do not have to worry about placing them in correct folder.5. Set up MEX to use Visual C++ 2010 with the command:mex –setupVisual C++ 2010 should now be among the listed options.Note that this patch will only work with MATLAB 7.10 (R2010a). Using this patch with any version of MATLAB is not supported.Other MathWorks products such as Real-Time Workshop do not support Visual C++ 2010.Refer to for up-to-date information concerning supported compilers. Related Documents/Files:具体操作方式:>> mex -setupWelcome to mex -setup. This utility will help you set upa default compiler. For a list of supported compilers, seePlease choose your compiler for building MEX-files:3Would you like mex to locate installed compilers [y]/n? ySelect a compiler:[1] Microsoft Software Development Kit (SDK) 7.1 in C:\Program Files(x86)\Microsoft Visual Studio 10.0[0] NoneCompiler: 1Please verify your choices:Compiler: Microsoft Software Development Kit (SDK) 7.1Location: C:\Program Files (x86)\Microsoft Visual Studio 10.0Are these correct [y]/n? y*************************************************************************** Warning: MEX-files generated using Microsoft Windows Software DevelopmentKit (SDK) require that Microsoft Visual Studio 2010 run-timelibraries be available on the computer they are run on.If you plan to redistribute your MEX-files to otherMATLAB users, be sure that they have the run-time libraries.***************************************************************************Trying to update options file:C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB\R2012b\mex opts.batFromtemplate: C:\PROGRA~1\MATLAB\R2012b\bin\win64\mexopts\mssdk71opts.batDone . . .************************************************************************** Warning: The MATLAB C and Fortran API has changed to support MATLAB variables with more than 2^32-1 elements. In the near futureyou will be required to update your code to utilize the newAPI. You can find more information about this at:Building with the -largeArrayDims option enables the new API.**************************************************************************5。
VS2010调用Matlab引擎的简单例子
engClose(ep); //关闭Matlab引擎。
}
5
6
无法调试。
mxArray*xx =mxCreateDoubleMatrix(1,N,mxREAL);
mxArray*yy=mxCreateDoubleMatrix(1,N,mxREAL); //同上。
memcpy(mxGetPr(xx), x, N*sizeof(double)); //将数组x复制到mxarray数组xx中。
using namespacestd;
intmain()
{
constintN = 50;
double x[N],y[N];
intj = 1;
for (inti=0;i<N;i++) //计算数组x和y
{
x[i] = (i+1);
y[i] = sin(x[i]) + j * log(x[i]); //产生-之间的随机数赋给xx[i];
memcpy(mxGetPr(yy), y, N*sizeof(double)); //将数组x复制到mxarray数组yy中。
engPutVariable(ep, "xx",xx); //将mxArray数组xx写入到Matlab工作空间,命名为xx。
engPutVariable(ep, "yy",yy); //将mxArray数组yy写入到Matlab工作空间,命名为yy。
或者直接从工具栏平台的下拉箭头下进入:
(2)增加x64平台
确定,得到如下结果。
3
项目属性——》VC++目录,如图:
包含目录增加:C:\Program Files\MATLAB\R2012b\extern\include
VS2010调用Matlab2012b引擎的设置方法
VS2010调用Matlab2012b引擎最近需要把matlab和VS结合起来使用,初来乍到出现了很多的麻烦,网上的资料大都也是matlab较低一些版本的,经过多方查找资料后,得以成功,现在总结出来,以方便读者们,避免走些弯路。
大家一起进步本人的平台是:win7旗舰版x64+VS2010(中文版)+Matlab2012b操作流程:1添加系统环境变量Win7的方法是在计算机中右击属性,然后选择左边的高级系统设置然后接着找到环境变量,设置系统环境变量,在系统环境变量中选择编辑,保持原有的内容不变,把光变移动到最后面,把matlab的地址写进去。
例如本人的安装目录是:D:\Program Files(86)\MATLAB\R2012b\bin\win64;,具体的位置由安装位置决定。
然后重新启动一下电脑,让刚刚设置的环境变量生效。
2在VS中新建一个编译平台(1)进入“配置管理器”由于本人的笔记本是64位的,所以不能用32位的系统编译平台,这点倒是废了很大的功夫,终于在网上找到了方法,再次表示感谢。
链接为/view/f87eee58804d2b160b4ec05b.html。
或者直接从工具栏平台的下拉箭头下进入:(2)增加x64平台确定,得到如下结果。
3添加头文件和库文件剩下的就是很常规的了,右击项目---属性---项目属性——》VC++目录,如图:包含目录增加:D:\Program Files(x86)\MATLAB\R2012b\extern\include库目录增加:d:\Program Files(x86)\MATLAB\R2012b\extern\lib\win64\microsoft 4. 此时还剩下最后一项设置,首先打开菜单项目->项目属性页选择配置属性->链接器->调试->生成调试信息改为是。
然后重新运行即可!!下面就可以编辑代码好好加油啦。
Matlab2012b调用Opencv中已定义的模块20130218
#include "mex.h" double add(double x, double y) { return x+y; } void mexFunction(int nlhs, mxArray *plhs[],int nrhs,const mxArray *prhs[]) { double a,b,*c; a=mxGetScalar(prhs[0]); b=mxGetScalar(prhs[1]); plhs[0]=mxCreateDoubleMatrix(1,1,mxREAL); c=mxGetPr(plhs[0]); *c=add(a,b); }
(2) 对于库文件中已经定义的函数和类等模块时,在 C/C++文件中包含这个库文件,语句为 #pragma comment(lib, "opencv_calib3d243d.lib") #pragma comment(lib, "opencv_contrib243d.lib") #pragma comment(lib, "opencv_core243d.lib") #pragma comment(lib, "opencv_features2d243d.lib") #pragma comment(lib, "opencv_flann243d.lib") #pragma comment(lib, "opencv_gpu243d.lib") #pragma comment(lib, "opencv_highgui243d.lib") #pragma comment(lib, "opencv_imgproc243d.lib") #pragma comment(lib, "opencv_legacy243d.lib") #pragma comment(lib, "opencv_ml243d.lib") #pragma comment(lib, "opencv_objdetect243d.lib") #pragma comment(lib, "opencv_ts243d.lib") #pragma comment(lib, "opencv_video243d.lib") 并将上述所有的库文件从opencv的安装目录下找到拷贝至mex命令所要编译的文件相同的目 录下。 (3) 利用 mex 命令编译“*.cpp”文件就可获得“*.mexw64”文件。 (4) 例子 #include "mex.h" #include "cv.h" //#include "highgui.h" #include "highgui.h" #pragma comment(lib, "opencv_calib3d243d.lib") #pragma comment(lib, "opencv_contrib243d.lib") #pragma comment(lib, "opencv_core243d.lib") #pragma comment(lib, "opencv_features2d243d.lib") #pragma comment(lib, "opencv_flann243d.lib") #pragma comment(lib, "opencv_gpu243d.lib") #pragma comment(lib, "opencv_highgui243d.lib") #pragma comment(lib, "opencv_imgproc243d.lib") #pragma comment(lib, "opencv_legacy243d.lib") #pragma comment(lib, "opencv_ml243d.lib") #pragma comment(lib, "opencv_objdetect243d.lib") #pragma comment(lib, "opencv_ts243d.lib")
VC2010在win764位系统下调用MATLAB2012a(2010a以后)的设置方法
VS2010与Matlab2012a混合编程(Alex-liu版,哈哈)套用今天的签名“最新的VS+最新的MATLAB+最新的WINDOWS=无尽的烦恼”,用了一天的时间去配置相关的环境,确实很囧。
好在现在问题解决了,特发布过程如下,希望能给有需要的朋友带来帮助。
注:因为程序也是刚调通,所以有些原因还没有仔细分析,如果不对,敬请指教。
1.<MATLAB>表示MATLAB按照目录2. 配置过程中的错误,请见:附录3.文中包含"只针对64位WINDOWS"字眼设置的,在WIN32(X86)环境无需设置4.本文配置中可能包含多余的一些配置,不过现在的目的是运行成功哈~~~至于精简部分,待我和大家使用时慢慢研究。
/*******************************************环境:1.VS20102.MATLAB2012a3.WINDOW 7 (X64)******************************************/1.Matlab环境设置要建立独立运行的C应用程序,系统中需要安装Matlab、Matlab编译器、C/C++编译器以及Matlab C/C++数学库函数和图形库函数。
Matlab编译器使用mbuild命令可以直接将C/C++源代码编译为独立运行程序,在这些源代码中可以使用Matlab提供的接口来调用Matlab数学库函数。
虽然生成的可执行程序可以脱离Matlab环境运行,但是它需要Matlab C/C++数学库文件或者图形库文件的支持才能运行。
但如果C/C++源代码完全是按传统C/C++源代码语法规则编写,没有包含Matlab数学库和图形库的调用,则不仅可以独立与Matlab环境,也不需要那两个库函数的支持。
在Matlab的Command Window 下输入命令mbuild –setup操作过程如下图:然后输入命令mex –setup以类似的方法配置编译器。
MATLAB2012b与vs2010相互调用时的编译环境设置
MATLAB2012b与vs2010(vc++9.0)交叉调用时的编译环境设置不会游泳的鱼 于2013年11月在科研和学习中,经常遇到MATLAB运行比较慢,而VC++又需要所有工作都由自己从头做起的情况。
那么,在VC++和MATLAB中进行交叉调用就成为一种能够博采众长的好方法。
但是,如果要实现MATALB 和VC++之间的相互调用,必须要对两者的编译环境进行一些必要的设置。
目前网络上公开的相关资料都是针对旧版本的MATLAB和VC++编译器进行设置,本文依据笔者亲自实验的结果介绍对MATLAB2012b和VS2010进行设置的说明。
考虑到WIN7, 8系统(64位)使用的增加,本文在VS2010中特别标注了x64系统(64位)与x86系统(32位)在设置上的区别。
第一部分:MATLAB 2012b的编译环境设置首先,确保本机已经正确安装MATLAB2012b 和Visual Studio 2010 (旗舰版) 且包含VC++组件(默认版本9.0),并且获得全部使用授权。
其次, 在MATLAB 2012b中安装mbuild组件。
(1)在MATLAB 2012b的命令窗口中键入:mbuild –setup‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ Welcome to mbuild ‐setup. This utility will help you set upa default compiler. For a list of supported compilers, see/support/compilers/R2012b/win32.htmlPlease choose your compiler for building shared libraries or COM components:Would you like mbuild to locate installed compilers [y]/n?‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ (2) 键入y并回车,MATLAB会显示当前系统已经安装的C和C++编译器。
VS 2010调用matlab 2010
再次编译,运行程序如下:
手把手教你学 VS 2010 调用 MATLAB 函数
点击“plot”按钮,就绘制出一个正弦曲线。
好了,先讲到这里吧。没来的急检查,先发出来吧!要是还有疑问,请加我的 QQ 群吧: 128229028。记住啊:Work time, no disturbance. 祝大家在学习编程的里程中一帆风顺!
点击“环境变量”按钮,出现下页的对话框。点击系统变量下得新建按钮,弹出“编辑系统变 量对话框” , 假设 VS 装在 D 盘, 变量名随便取一个, 变量值设置为 “D:\Program Files\Microsoft Visual
手把手教你学 VS 2010 调用 MATLAB 函数
Studio 10.0\VC\bin” (以实际的编译器位置为准哦! ) 。完成后点击确定。
4. 动态库调用示例 新建一个工程,工程名:test,建立一个基于对话框的程序。对话框上加一个按钮,取名“plot” 。 在 testmtDlg.cpp 文件中加入如下标灰色背景的代码。
#include "stdafx.h" #include "testmt.h" #include "testmtDlg.h" #include "afxdialogex.h" #include "test.h" //#pragma comment(lib,"libmx.lib") //#pragma comment(lib,"libmat.lib") //#pragma comment(lib,"libeng.lib") #pragma comment(lib,"mclmcrrt.lib") #pragma comment(lib,"test.lib") ……………….. BOOL CtestmtDlg::OnInitDialog() {
vs2010和Matlab-R2011b-混合编程------使用COM组件
vs2010和Matlab R2011b 混合编程------使用COM组件(VS2010+Matlab7.11)COM 是component object module 的简称,它是一种通用的对象接口,任何语言只要按照这种接口标准,就可以实现调用它。
matlab6.5 新推出来的combuilder 就是把用matlab 编写的程序做成com 组件,供其他语言调用。
该方法实现简单,通用性强,而且几乎可以使用Matlab 的任何函数(注意:不支持脚本文件,脚本文件使用时要改为函数文件),因此在程序较大、调用工具箱函数或调用函数较多时推荐使用,这也是Matlab 公司(Matlab 公司就是Mathworks公司)推荐的使用方法。
COM(Compponent ObjectModel 组件对象模型)是一项比较复杂的技术,详细讲的话几本书也讲不完,所以在这里不作介绍,本文通过一个例子详细介绍如何在matlab 下做COM 组件,以及如何在VC 中调用COM 组件。
首先在Matlab 编辑器里编辑m 函数文件:启动matlab->File->New->M-file函数内容如图1:该函数无输入输出参数,文件保存为huatu.m。
function huatu()x=-10:0.1:10;y=sin(x);plot(x,y);在matlab 下建立COM 组件,步骤如下:1、在matlab command window 输入如下命令:>> deploytool2、新建工程:Target选择Generic COM Component;弹出选择对话框如下图3、点击Add Class添加工程类,然后点击Add files 添加编写的.m 文件,如下图所示4、对于在没有装Matlab的电脑上,运行混编软件,需要装MCR(Matlab Compiler Runtime),它是一组独立的共享库,可用于在未安装MATLAB 的计算机上执行编译后的 MATLAB 应用程序或组件,如下图所示---------------->5、最后点击编译与打包命令,生成最终的com组件,如下图所示,生成成功。
VS调用matlab生成的dll
VS调用matlab生成的dll一、编程环境●VS2010 professional 32位●Matlab2010b 32位二、m atlab程序转dll1.matlab程序简单实例2.转dll步骤●命令行中输入:mbuild–setup,再选择编译的环境;●命令行输入:mcc –W cpplib:libname–T link:libfilename.m;●生成多个文件,有用的文件为libname.lib、libname.c、libname.dll,切记libname.cpp只是参考用的,不要加入到VS项目里面。
三、V S工程建立1、包含库及链接库设置●包含目录中添加:D:\matlab\extern\include;●库目录中添加:D:\matlab\extern\lib\win32\microsoft;●链接器-常规-附加库目录中添加:D:\matlab\extern\lib\win32\microsoft;●链接器-输入-附加依赖项添加libmyadd.lib;mclmcr.lib;libeng.lib;libmat.lib;libmex.lib;libmx.lib;mclmcrrt.lib;切记,一定要把libmyadd.lib加入;2、调用matlab的dll程序实例四、总结1、刚开始用自己的笔记本(环境是win7 64位),matlab生成dll后在VS2010中调用,编译一直提示连接错误,主要是很多内部函数(尾部添加_proxy)链接失败,可能是VS项目设置的WIN32原因,而且matlab/extern/lib里面win32的lib没有mclmcrrt.lib文件,所以给VS更新X64功能,后来没成功,转到单位的32机器上面。
2、在win7 32位机器上面直接编译成功,但是运行会报错,我调试后发现运行到matlab的dll核心程序if (mclcppFeval(inst, name, nargout, (void**)&lhs,(void*)((array_buffer*)rhs)) == MCLCPP_ERR) mwException::raise_error();时报错,通过几个小时的分析,认为没有把libmyadd.lib加入到附加依赖项中,但是加上后会提示发现重定义字符,预算把libmyadd.cpp移除,再编译后成功运行。
Matlab2012a与VS2010(C++)混合编程
Matlab2012a与VS2010(C++)混合编程经历了各种报错和崩溃,用了近1个月的时间终于把C++的程序调通了。
在编程过程中,我在网上找了各种Matlab和C++混编的资料,感觉混编的资料太少,故将自己编程的过程和心得分享给大家,希望能帮到和我一样挣扎在混编领域中的同学。
环境:windows8.1,Matlab2012a,VS2010需要编的C++程序要实现与Matlab一样的功能,从键盘输入数据,获得计算结果和图像。
如下图:大概的过程:Matlab的m文件→dll→C++调用dll和Matlab中的engine(与图像有关,后面会详细说明)→输出计算结果和图像1.Matlab编译器设置(电脑安装有VS2010)(1)mex命令设置(a) 运行 Matlab ,在 Matlab 的命令窗口 (Command Window) 键入“ mex -setup ”命令后,按回车键,安装 Matlab 编译器;(b) 命令窗口出现如下提示:Please choose your compiler for building external interface (MEX) files:Would you like mex to locate installed compilers [y]/n?此时键入“y” ,按回车;(c) 命令窗口出现如下提示:Please choose your compiler for building external interface (MEX) files:Would you like mex to locate installed compilers [y]/n? ySelect a compiler:[1]Microsoft Visual Studio 2010 in G:\ Visual Studio 2010[0] None此时键入” 1” ,按回车;选择 Microsoft Visual Studio 2010 的编译器(d) 命令窗口出现如下提示:Please verify your choices:Compiler: Microsoft Visual Studio 2010Location: G:\ Visual Studio 2010Are these correct?([y]/n):此时键入”y” ,按回车;确认选择 Microsoft Visual Studio 2010 的编译器(2) mbuild 命令设置(a) 运行 Matlab ,在 Matlab 的命令窗口 (Command Window) 键入“ mbuild -setup ”命令后,按回车键,安装 Matlab 编译器;(b) 命令窗口出现如下提示:Please choose your compiler for building standalone MATLAB applications:Would you like mbuild to locate installed compilers [y]/n?此时键入”y” ,按回车;(c) 命令窗口出现如下提示:[1] Microsoft Visual Studio 2010 in G:\ Visual Studio 2010[0] None此时键入“1” ,按回车;选择 Microsoft Visual Studio 2010 的编译器(d) 命令窗口出现如下提示:Please verify your choices:Compiler: Microsoft Visual Studio 2010Location: G:\ Visual Studio 2010Are these correct?([y]/n):此时键入”y” ,按回车,确认选择 Microsoft Visual Studio 2010 的编译器,编译器设置完成。
解决Matlab2012b找不到编译器的问题
解决Matlab2012b找不到编译器的问题+解决补丁!matlab在关联编译器的时候,会出现找不到编译器的问题,原因是matlab要找windows sdk的mt.exe,找不到,必然报错. 因为vs2012在安装时,windows sdk的mt.exe位置变了,可能matlab还是按照老的路径找,肯定找不到(原来在windows sdks下面,现在在windows kits下面).matlab在关联编译器的时候,会出现找不到编译器的问题,原因是matlab要找windows sdk的mt.exe,找不到报错的.因为vs2012在安装时,windows sdk的mt.exe位置变了,而matlab还是按照老的路径找,肯定找不到(原来在windows sdks下面,现在在windows kits下面).如果你的环境是64位windows,并且vs2012装在默认目录下,matlab是64位版本,那么直接使用附件的文件,把他们添加到matlab/bin/win64下面的相关目录下即可,一个4个文件,放在2个目录.如果你的vs目录不是默认的,或者是32位版本,或者vs版本不是2012,那么需要修改附件里面的相关目录的设置(其实就是cl.exe和mt.exe的目录位置),我修改的方法是直接设置成目标目录(默认安装的位置),不是读注册表,这样简单,也无需修改注册表,以及建立什么目录链接(mklink).当然如果你的mt.exe目录不在Windows kits下,那需要修改附件的文件.附件里有一个word文件,是我修改的标识,当做帮助来用.使用方法,1 把附件相关的4个文件添加到matlab/bin/win64下面的2个相关目录2 在matlab 里面运行mbuild -setup, 然后选y, 再选择2012的那个项目,再选y3 这是应该成功了4 mex -setup也是一样的.有一个奇怪的情况,就是.stp文件必须直接修改,我在桌面修改,然后覆盖到matlab目录后,其实并没有覆盖,还是原来的文件. 修改时要注意.大家从这下载解决补丁吧!How can I use Microsoft Visual C++ 2010 to create MEX files with MATLAB 7.10 (R2010a)?官网解决方案:Solution:The Microsoft Visual C++ 2010 compiler is not supported on the released version of MATLAB 7.10 (R2010a), but support can be added by installing a patch. To install the patch:1. Download the patch attached to this Solution. The patch includes files needed to support these combinations of MATLAB and Visual C++ 2010:? Visual C++ 2010 Professional and 64-bit MATLAB 7.10 (R2010a)? Visual C++ 2010 Professional and 32-bit MATLAB 7.10 (R2010a)? Visual C++ 2010 Express (Windows SDK 7.1 also required) and 64-bitMATLAB 7.10 (R2010a)? Visual C++ 2010 Express and 32-bit MATLAB 7.10 (R2010a)2. Launch MATLAB 7.10 (R2010a). If running on Windows Vista or Windows 7 run as administrator by right-clicking on the MATLAB shortcut and choosing "Run As Administrator". This permits modification of files in the MATLAB installation path.3. Confirm that you are running MATLAB 7.10 (R2010a). You can check this using the About box available at Help->About MATLAB.4. Unzip the contents of the patch into your MATLAB installation using the following command on the MATLAB command window.unzip( path_to_zip_file, matlabroot);This command will automatically unzipped the files in the correct folder and you do not have to worry about placing them in correct folder.5. Set up MEX to use Visual C++ 2010 with the command:mex –setupVisual C++ 2010 should now be among the listed options.Note that this patch will only work with MATLAB 7.10 (R2010a). Using this patch with any version of MATLAB is not supported.Other MathWorks products such as Real-Time Workshop do not support Visual C++ 2010.Refer to /support/compilers/R2010a/index.html for up-to-date information concerning supported compilers.Related Documents/Files:具体操作方式:>> mex -setupWelcome to mex -setup. This utility will help you set upa default compiler. For a list of supported compilers, see/support/compilers/R2012b/win64.htmlPlease choose your compiler for building MEX-files:Would you like mex to locate installed compilers [y]/n? ySelect a compiler:[1] Microsoft Software Development Kit (SDK) 7.1 in C:\Program Files (x86)\Microsoft Visual Studio 10.0[0] NoneCompiler: 1Please verify your choices:Compiler: Microsoft Software Development Kit (SDK) 7.1 Location: C:\Program Files (x86)\Microsoft Visual Studio 10.0Are these correct [y]/n? y*************************************************************************** Warning: MEX-files generated using Microsoft Windows Software DevelopmentKit (SDK) require that Microsoft Visual Studio 2010 run-timelibraries be available on the computer they are run on.If you plan to redistribute your MEX-files to other MATLABusers, be sure that they have the run-time libraries.***************************************************************************Trying to update options file:C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB\R2012b\mex opts.batFromtemplate: C:\PROGRA~1\MATLAB\R2012b\bin\win64\mexopts\mssd k71opts.batDone . . .************************************************************************** Warning: The MATLAB C and Fortran API has changed to support MATLAB variables with more than 2^32-1 elements. In the near futureyou will be required to update your code to utilize the newAPI. You can find more information about this at:/help/techdoc/matlab_external/bsflnue-1.ht mlBuilding with the -largeArrayDims option enables the new API.**************************************************************************。
VisualC++调用MATLAB的方法及其应用
VisualC++调用MATLAB的方法及其应用摘要:介绍了MATLABengine的用途、主要库函数及VC调用MATLAB engine的详细步骤。
利用这项技术,精确故障定位综合软件实现了以VC编写主界面,调用MATLAB完成故障分析和波形显示的功能,从而缩短了程序开发周期,减少了程序员的工作量。
最后简单介绍了该软件的其它功能。
关键词:Visual C++;MATLABengine;精确故障定位MATLAB是美国MathWorks公司自80年代中期推出的数学软件,它在矩阵运算、二维和三维图形的绘制、数值拟合等方面均有极强的功能,已被广泛运用于数字信号处理、电力系统仿真等各个领域。
MATLAB的突出特点是简洁,它利用其丰富的函数资源,给用户带来最直观、最简洁的程序开发环境[2]。
Visual C++是Microsoft公司推出的可视化编程环境,它是目前综合性最高、最强大、也是最复杂的软件开发工具之一,应用极为广泛[1]。
精确故障定位综合软件是为多端信号输电线路故障精确定位系统所设计的,它实现的主要功能为:(1) GPS同步循环采样;(2) 嵌入超级终端应用程序,通过MODEM实现输电线路双端采样信号的传输;(3) 分析故障数据,判断故障相别,精确定位故障点位置;(4) 根据采样数据绘制故障电压、电流波形以及各相电压、电流的频谱图。
本软件的主界面是采用VC编写,而分析计算故障点位置及波形显示等功能由MATLAB实现。
VC的图形界面编程能力强大,菜单、工具条、快捷方式等实现起来很简单,并且生成的应用程序可脱离VC编译环境独立运行,但要完成数学计算功能如傅立叶变换等就需用户自己编写函数,繁琐不便。
而MATLAB有丰富的函数资源供用户直接调用,且其绘图功能强大,较之VC其语言更为简洁明了,并且生成的图形可轻松实现多种功能,诸如图形添加文字说明、缩放、旋转、坐标轴标注、曲线说明等,这些若由VC来实现将极为复杂。
定标数据处理之vs2010对matlab的调用
定标数据处理之vs2010对matlab的调⽤Vs2010调⽤matlab2012a主要的实验任务是将,matlab编写的定标程序转换成可以独⽴运⾏的.exe⽂件和供vs2010调⽤的c++动态链接库。
测试,经过转换过后能否提⾼程序的运⾏时间。
实验的操作环境:vs2010中⽂版,matlab2012a,win7,64位环境的配置:⾸先在matlab2012a中输⼊mbuild -setup,如下:接着根据操作分别输⼊:y,1,y;最终结果如下:到此为⽌,matlab⾥的编译器配置已经完成,本例中选择的是vs2010.需要注意的是:不是所有的matlab版本都可以调⽤任意的vs版本,matlab2010b以后的才可以调⽤vs2010.接下来,如果,我们是要⽣成.exe程序,我们可以直接使⽤mcc –m完成操作,在matlab 的busy结束后,我们可以在路径下看到⽣成的.exe程序。
如果,我们需要将.m⽂件编译成供vs2010调⽤的动态链接库,我们需要⽤mcc -W将matlab编写的.m⽂件编译成c++语⾔。
注意:在matlab中,mcc的编译只能够⽤于function函数。
所以,我们在操作之前,要先将⽬标写成函数的.m⽂件形式。
下⾯,我将以⼀个加法器的例⼦详细讲述操作的整个过程:先编写function函数:function [c]=add(a,b)c=a+b;return;end编译:⽣成.exe⽂件mcc -m add在路径下会出现⼀下的图标:其中add.exe就是我们需要的⽂件。
直接运⾏它就可以了。
本例是⽰范作⽤,运⾏时会提⽰有错误的,具体的可以使⽤写好的.m⽂件,编译好,就可以使⽤了。
⽣成供vs2010调⽤的动态链接库:这⾥有两条指令:mcc -W cpplib:add -T link:lib add和mcc -W lib:add -T link:lib add第⼀条是编译⽣成c++动态链接库第⼆条是编译⽣成c动态链接库式中cpplib:add中的add是编译后⽂件的名称,link:lib 后的add是要编译的.m⽂件。
vs2010的11个调试技巧和方法
vs2010的11个调试技巧和⽅法调试是软件开发周期中很重要的⼀部分。
它具有挑战性,同时也很让⼈疑惑和烦恼。
总的来说,对于稍⼤⼀点的程序,调试是不可避免的。
最近⼏年,调试⼯具的发展让很多调试任务变的越来越简单和省时。
这篇⽂章总结了可能节省你⼤量时间的11个Visual studio的调试技巧和⽅法。
1 悬停⿏标查看表达式值调试是很有挑战性的。
⽐如在函数内逐步运⾏可以看出哪⾥出错,查看堆栈信息可以知道函数被谁调⽤等等……但是⽆论哪种情况下,查看表达式和局部变量的值都是很⿇烦的(把表达式和局部变量放到watch窗⼝⾥)。
⼀种更简单的⽅法,把⿏标停在所需查看的数据上。
如果是类或结构,那么点击展开可以很⽅便快速地查看其字段。
2 在运⾏过程中改变变量值调试器不仅仅是分析程序崩溃和诡异⾏为的⼯具,还可以通过逐步调试检查数据和⾏为是否符合程序预期的⽅法解决许多bug。
有时,你会想是否设置某些条件为真,程序就能正确运⾏了。
其实你只要把⿏标移动到变量上,双击值,然后输⼊你需要的值。
这样就不需要修改代码,重启程序了。
3 设置下⼀个运⾏位置⼀个典型的调试案例是我们经常会⽤逐步调试的⽅法去分析为什么函数出错了。
这时你遇到这个函数调⽤其他函数返回错误,⽽这个错误不是你想要的,你该怎么办?重启调试器?这⾥有个更好的⽅法,直接把黄⾊的运⾏位置箭头拖到你想要的运⾏位置。
其实就是跳过中间运⾏代码,直接到想要的位置。
很简单吧。
4 编辑然后继续运⾏在运⾏⼀个很复杂的程序和插件时,发现⼀个错误,但是不想浪费时间去重编译重启动程序。
很简单,只要在这个位置修改这个bug,然后继续调试。
Visual studio会修改这个程序,使得你可以继续调试⽽不需要重启程序。
值得注意的是“编辑然后继续运⾏”这个功能有⼏个限制。
⼀,它不能在64位代码上使⽤。
如果想使⽤这个功能,到项⽬设置⾥的编译选项,选择”x86”作为⽬标平台。
不要担⼼,这⽬标平台在reslease配置是和”debug是分离的,也就是说依然是”Any CPU”的设置。
VS调用matlab函数
VS调⽤matlab函数1、⾸先安装Matlab;安装Visual Studio 2005或者更⾼版本;安装MCRInstall.exe:在安装完Matlab(安装的路径是 D:\Program Files\MATLAB\ )之后在这⾥找得的:D:\ProgramFiles\MATLAB\R2009b\toolbox\compiler\deploy\win32点击:我的电脑-属性-⾼级-环境变量-系统变量-PATH-编辑,在变量值输⼊框中,不要删除以前的字符串,在最前⾯加⼊MCR的安装的路径,如 “D:\Program Files\MATLAB\MATLAB Compiler Runtime\v80\bin\win32;” 然后确定、保存、重启电脑。
(若不⾛上⾯两步,在C#创建Matlab的访问对象时,就会出现:“xxx的类型初始值设定项引发异常。
”这样的错误)2、Matlab 2008b⾸先需要做的⼯作是matlab编译器的设置,设置⽅法为:在Command window中输⼊mbuild -setup显⽰如下>> mbuild -setupPlease choose your compiler for building standalone MATLAB applications:Would you like mbuild to locate installed compilers [y]/n? n %选择nSelect a compiler:[1] Lcc-win 32 C 2.4.1[2] Microsoft Visual C++ 6.0[3] Microsoft Visual C++ .NET 2003[4] Microsoft Visual C++ 2005[5] Microsoft Visual C++ 2005 Express Edition[6] Microsoft Visual C++ 2008[0] NoneCompiler: 4 %选择4,根据⾃⼰安装的vs选择The default location for Microsoft Visual C++ 2008 compilers is C:\Program Files\Microsoft Visual Studio 9.0,but that directory does not exist on this machine.Use C:\Program Files\Microsoft Visual Studio 9.0 anyway [y]/n? n%选择nPlease enter the location of your compiler: [C:\Program Files\Microsoft Visual Studio 9.0] D:\Program Files\Microsoft Visual Studio 9.0 %选择您⾃⼰的当前安装路径Please verify your choices:Compiler: Microsoft Visual C++ 2008Location: D:\Program Files\Microsoft Visual Studio 9.0Are these correct [y]/n? y %看上述信息,如果正确选择y****************************************************************************Warning: Applications/components generated using Microsoft Visual Studio2008 require that the Microsoft Visual Studio 2008 run-timelibraries be available on the computer used for deployment.To redistribute your applications/components, be sure that thedeployment machine has these run-time libraries.****************************************************************************Trying to update options file: C:\Documents and Settings\Administrator\ApplicationData\MathWorks\MATLAB\R2008b\compopts.batFrom template: D:\PROGRA~1\MATLAB\R2008b\bin\win32\mbuildopts\msvc90compp.batDone . . .%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%⾄次编译器设置完成%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3、在matlab的Command window中输⼊:>> deploytoolMatlab产⽣deployment tool配置窗⼝单击新建按钮,新建⼯程------>选择MATLAB Builder NE 选项卡----->选择.NET Component并添加⼯程名eaqual(测试⽤名,其实⼯程名称就是你导⼊C#后的命名空间名称,Matlab会在当前⼯作⽬录中新建⽂件夹⽂件夹名既为equal)---->点击ADD File按钮将你需要编译的MATLAB函数添加进当前⼯程,我这⾥导⼊的是 D:\ProgramFiles\MATLAB\R2008b\toolbox\aero\aero\angle2quat.m⽂件---->点击build.deployment tool output 窗⼝输出以下信息:Build output( 2009-03-28 15:32:55).[url=matlab:mcc -F 'E:\MATLAB\eaqual.prj']mcc -F 'E:\MATLAB\eaqual.prj'[/url]等待...............................当输出以下信息时编译成功了..............................................................Compiler version: 4.9 (R2008b) Warning: Duplicate directory name: E:\MATLAB. mcc -W 'dotnet:eaqual,Eaqual,0.0,private' -d 'E:\MATLAB\eaqual\src' -T 'link:lib' -v 'class{Eaqual :\Program Files\MATLAB\R2008b\toolbox\aero\aero\angle2quat.m}' Warning: Name is nonexistent or not a directory: D:\Program Files\MATLAB\R2008b\toolbox\compiler\patch. Warning: Name is nonexistent or not a directory: D:\Program Files\MATLAB\R2008b\toolbox\compiler\patch. Processing D:\ProgramFiles\MATLAB\R2008b\toolbox\aero\mcc.enc Processing D:\Program Files\MATLAB\R2008b\toolbox\matlab\mcc.enc Processing include files... 2 item(s) added. Processing directories installed with MCR... The fileE:\MATLAB\eaqual\src\mccExcludedFiles.log contains a list of functions excluded from the CTF archive. 2 item(s) added. Generating MATLAB path for the compiled application... Created 40 path items. Begin validation of MEX files: Sat Mar 28 15:35:11 2009 End validation of MEX files: Sat Mar 28 15:35:11 2009 Warning: Name is nonexistent or not a directory:D:\Program Files\MATLAB\R2008b\toolbox\compiler\patch. Deleting 0 temporary MEX authorization files. Parsing file "D:\Program Files\MATLAB\R2008b\toolbox\aero\aero\angle2quat.m" (Referenced from: "Compiler Command Line"). Parsing file "D:\Program Files\MATLAB\R2008b\toolbox\compiler\deploy\deployprint.m" (Referenced from: "Compiler Command Line"). Parsing file "D:\Program Files\MATLAB\R2008b\toolbox\compiler\deploy\printdlg.m" (Referenced from: "Compiler Command Line"). Generating file "E:\MATLAB\eaqual\src\Eaqual.cs". Generating file"E:\MATLAB\eaqual\src\EaqualNative.cs". Generating file "E:\MATLAB\eaqual\src\readme.txt". Generating file"E:\MATLAB\eaqual\src\dotnet_mcc_component_data.cs". Executing command:C:\WINDOWS\\Framework\v2.0.50727\csc.exe /nologo /optimize /doc:"E:\MATLAB\eaqual\src\eaqual.xml"/t:library /r:"D:\Program Files\MATLAB\R2008b\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll"/resource:"E:\MATLAB\eaqual\src\eaqual.ctf" /out:"E:\MATLAB\eaqual\src\eaqual.dll" "E:\MATLAB\eaqual\src\Eaqual.cs" "E:\MATLAB\eaqual\src\dotnet_mcc_component_data.cs" Executing command:C:\WINDOWS\\Framework\v2.0.50727\csc.exe /nologo /optimize/doc:"E:\MATLAB\eaqual\src\eaqualNative.xml" /t:library /r:"D:\ProgramFiles\MATLAB\R2008b\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll" /resource:"E:\MATLAB\eaqual\src\eaqual.ctf"/out:"E:\MATLAB\eaqual\src\eaqualNative.dll" "E:\MATLAB\eaqual\src\EaqualNative.cs""E:\MATLAB\eaqual\src\dotnet_mcc_component_data.cs"Copying: E:\MATLAB\eaqual\src\eaqual.dll -> E:\MATLAB\eaqual\distribCopying: E:\MATLAB\eaqual\src\eaqualNative.dll -> E:\MATLAB\eaqual\distribCopying: E:\MATLAB\eaqual\src\readme.txt -> E:\MATLAB\eaqual\distribCompilation completed succesfully. The output is located in E:\MATLAB\eaqual\distrib.You can package the component by clicking on the "package" icon in the Deployment Tool toolbar, or by clicking the Tools->package menu when the Deployment Tool panel is selected. To include additional files in the package, click Project->Settings). ..............................................................⽣成的⽂件在⼯程⽂件夹⾥⾯我的是 E:\MATLAB\eaqual\distrib\angle2quat.dll⾄此MATLAB的操作全部完成4、打开VISUAL Studio 2008新建C#⼯程,这⾥⽤的是控制台名为TestOfmatlab_consolt我的是 E:\Visual Studio 2008\Projects\TEST\TestOfmatlab_consolt添加引⽤E:\MATLAB\eaqual\distrib\angle2quat.dll和D:\Program Files\MATLAB\R2008b\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll(这⾥我没有⽤MATLAB画图,所以只引⽤MWArray.dll)加⼊命名空间:using .Arrays;将下⾯代码加⼊Main函数eaqual.Eaqual eq=new eaqual.Eaqual();.Arrays.MWArray m=10,n=4,j=7,k;MWArray S = "XYZ";k=eq.angle2quat((MWNumericArray)m,(MWNumericArray)n,(MWNumericArray)j,(MWCharArray)S); MWNumericArray temp = (MWNumericArray)k;double[,] location = (double[,])temp.ToArray(MWArrayComponent.Real);Console.WriteLine(location[0,0].ToString());Console.WriteLine(location[0,1].ToString());Console.WriteLine(k[2].ToString());Console.WriteLine(k[3].ToString());Console.WriteLine(k[4].ToString());Console.ReadLine();。
Matlab2012最新教程(代码直接复制调试).
【例 1.3-1】求[12 + 2 ⨯(7 - 4]÷ 3 的算术运算结果。
本例演示:最初步的指令输入形式第 1 章基础准备及入门1.1最简单的计算器使用法为易于学习,本节以算例方式叙述,并通过算例归纳一些 MATLAB 最基本的规则和语法结构。
建议读者,在深入学习之前,先读一读本节。
2和必需的操作步骤。
(1用键盘在 MATLAB 指令窗中输入以下内容 >> (12+2*(7-4/3^2(2在上述表达式输入完成后,按 [Enter] 键,该指令被执行,并显示如下结果。
ans =2〖说明〗本例在指令窗中实际运行的情况参见图 1.3-1。
指令行―头首‖的― >>‖是―指令输入提示符‖,它是自动生成的。
本书在此后的输入指令前将不再带提示符― >>‖。
理由是:(A 为使本书简洁;(B 本书用 MATLAB 的 M-book 写成,而在 M-book 中运行的指令前是没有提示符的。
5致从10到 10MATLAB 的运算符(如+、- 等都是各种计算程序中常见的习惯符号。
一条指令输入结束后,必须按 [Enter] 键,那指令才被执行。
由于本例输入指令是―不含赋值号的表达式‖,所以计算结果被赋给 MATLAB 的一个默认变量―ans ‖。
它是英文―answer ‖的缩写。
【例 1.3-2】―续行输入‖法。
本例演示:或由于指令太长,或出于某种需要,输入指令行必须多行书写时,该如何处理。
S=1-1/2+1/3-1/4+ ... 1/5-1/6+1/7-1/8 S =0.6345〖说明〗MATLAB 用 3 个或 3 个以上的连续黑点表示―续行‖,即表示下一行是上一行的继续。
本例指令中包含―赋值号‖,因此表达式的计算结果被赋给了变量 S 。
指令执行后,变量 S 被保存在 MATLAB 的工作空间(Workspace 中,以备后用。
如果用户不用 clear 指令清除它,或对它重新赋值,那么该变量会一直保存在工作空间中, 直到本 MATLAB 指令窗被关闭为止。
VB程序中实现调用MATLAB的方法
收稿日期:2000207227 作者简介:王跃强(1978-),男,硕士研究生,主要研究方向:光电检测及其自动化.文章编号:1001-9081(2001)02-0095-02VB 程序中实现调用M AT LAB 的方法王跃强,王纪龙,王云才(太原理工大学应用物理系,山西太原030024)摘 要:本文介绍了在VB 应用程序中利用动态数据交换和ActiveX 自动化(O LE 自动化)协议实现的两种调用MAT LAB 函数的方法。
通过这两种方法实现了VB 的可视化界面与MAT LAB 强大的数值分析和图形显示的能力的结合。
关键词:MAT LAB ;VB ;DDE ;客户/服务器中图分类号:TP312VB 文献标识码:B 通过对M AT LAB 的应用程序接口的分析,可以发现M AT LAB 提供了客户/服务器(Client/Server )功能。
利用其中的动态数据交换(DDE )服务功能和ActiveX 自动化(O LE 自动化)服务功能,可以实现在VB 中对M AT LAB 函数的调用,并通过mxArrays (M AT LAB 中的基本数据类型)与M AT LAB 工作空间交换数据,从而增强VB 的数值计算能力和数据的可视化能力。
下面介绍在VB 程序中调用M AT LAB 的方法。
1 MAT LAB 的动态数据交换服务功能动态数据交换(DDE )是在Windows 环境下支持客户/服务器计算模式的重要技术,两个Windows 应用程序之间可以通过交换数据来相互连接,由于VB 支持DDE 客户端功能,M AT LAB 提供了DDE 服务功能,因此利用VB 和M AT LAB 的动态数据交换能力,可以实现在VB 应用程序中调用M AT LAB 。
VB 应用程序首先通过确定服务器名和主题(topic )建立与M AT LAB 的DDE 会话,服务器名和主题唯一地确定了这次会话,在会话期间VB 应用程序作为客户端,M AT LAB 作为服务端,客户端与服务端可以就确定的项目(item )交换数据。
VS2010调试技巧
相信作者书此文定为方便大家!故冒昧转载VS2010中的调试技巧跳到当前光标处(Ctrl+F10我经常看到人们为了到达目标代码位置,而在程序中早早设定了断点,然后反复地按F10/F11,一步步走到目标代码处。
当程序员的确需要仔细观察每一步的状态变化时,F10/F11是合理的选择。
然而多数情况下,人们只想快速到达他们真正关心的代码处,这时候F10/F11就不是最佳选择了。
这时,你应该利用―跳到当前光标处‖这个功能。
先把光标定位在要测的目标代码行上,再同时按Ctrl和F10,被测程序将直接跳到该行停下。
你再也不用按许多次F10/F11了。
即使目标代码位于独立的类或方法中,你仍然可以从当前正在检查的地方跳过去。
条件中断另一种常见的情况是:开发人员设置断点,运行程序,利用不同的输入触发断点,然后在断点处手工检查是否满足某些特定的条件,从而决定是否继续调查。
如果当前场景不是他们想要的,按F5继续运行程序,尝试别的输入,手动重复刚才的过程。
针对上述情况,Visual Studi o提供了一个方便得多的功能——―条件中断‖。
只有当程序满足了开发人员预设的条件后,条件断点才会被触发,调试器中断。
这将避免频繁地手工检查/恢复程序运行,大量减少调试过程中的手工和烦琐工作。
如何设置条件断点设置条件断点非常容易。
在特定的行上,按F9设置断点。
然后右击断点–编辑窗口左侧的红点,在上下文菜单上选择―Condition…‖。
这时弹出一个对话框供你设置激活该断点所需的条件。
比如:我们希望只有当局部变量paginatedDinners的尺寸小于10时,调试才中断。
我们可以写出如下的表达式:现在我再运行这个程序,实现搜索,只有返回值小于10时,程序运行才会被中断。
对于大于10的值,该断点将被跳过。
记录到达断点次数有时你希望,只有当第N次满足条件的运行到达断点时,才中断程序运行。
例如:当第五次返回少于10份晚餐的查询结果时,中断程序运行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
vs2010下调用matlab2012b调试方法
配置环境:
vs2010+matlab2012b+win7 64位
说明:
以安装路径“E:\Program Files\MATLAB\R2012b\”为例MATLAB外部支持文件夹:
E:\Program Files\MATLAB\R2012b\extern
matlab自带的c例程:
E:\Program
Files\MATLAB\R2012b\extern\examples\eng_matengine.h的位置:
E:\Program Files\MATLAB\R2012b\extern\include各种lib的位置:
E:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft 在matlab帮助中输入“C language”即可找到有关MATLAB Engine的一个页面。
从这个页面开始,学习各种关键词,
就能够找到一切你需要的资料。
使用MATLAB Engine一般用两套函数就可以了。
1.engXXXX,关于Engine本身的操作,包括打开/关闭,设置/取得变量,执行语句等等。
2.mxXXXX,关于数据类型mxArray的操作,与MATLAB 交互的左右类型全部为mxArray。
搭建过程:1.先在VC6的tools->options->directories里添加相关目录include files:
E:\Program Files\MATLAB\R2012b\extern\include
E:\Program
Files\MATLAB\R2012b\extern\include\win64library files:
E:\Program
Files\MATLAB\R2012b\extern\lib\win64\microsoft2 点击LInker input 将libmx.lib;libmex.lib;libeng.lib;加入到Additional Dependencies
或者用#pragma comment (lib, "libeng.lib")
#pragma comment (lib, "libmx.lib")
#pragma comment (lib, "libmex.lib") 语句
3 环境变量加上E:\Program
Files\MATLAB\R2012b\bin\win64 否则编译成功运行时会显示缺少dll
4包含头文件engine.h
5这就可以去调用engine里的一些引擎函数了做好这些后,如果我们环境一样,
下面的代码应该能够编通并且正常执行,
其中包含了常用的一些函数,
一般来说使用Engine的时候也就用这些了。
出现问题解决方法:
1 编译出现:
1>test.obj : error LNK2019: 无法解析的外部符号
_engClose,该符号在函数_main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号
_engSetVisible,该符号在函数_main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号
_mxDestroyArray,该符号在函数_main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号
_mxGetData,该符号在函数_main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号
_mxGetDimensions_730,该符号在函数_main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号
_mxGetNumberOfDimensions_730,该符号在函数_main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号
_engGetVariable,该符号在函数_main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号
_engEvalString,该符号在函数_main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号
_engPutVariable,该符号在函数_main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号
_mxGetPr,该符号在函数_main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号
_mxCreateDoubleMatrix_730,该符号在函数_main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号
_engOpen,该符号在函数_main 中被引用
1>D:\VSProjects\matlabtest\matlabtest\Debug\matlabtest.exe : fatal error LNK1120: 12 个无法解析的外部命令这个问题如果你按照上述配置好的话,这就很有可能出在兼容问题
上。
因为2012b只提供64位版本,所有需要将vs工程变为64位。
点击win32旁的下拉列表,选择配置管理器。
在活动解决方案平台这里选择x64即可。
重新编译一切ok。
2 如果vs工程中还包含其他库是32位的,那么只能装matlab7 ,他只支持32位。
而且matlab6.x版本又不支持vs2010.装好以后,需要配置兼容性。
然后点击其桌面的快捷方式,修改其兼容性,我的系统是win7,改成了兼容vista,保存修改,点击成功运行。