VC++6.0与MATLAB - R2010b混合编程实例 - 图文
更新时间:2023-09-28 16:26:01 阅读量: 综合文库 文档下载
- vc 6.0使用教程推荐度:
- 相关推荐
VC++6.0与MATLAB R2010b混合编程实例
先安装MATLAB编译器: Mbuild -setup
选择y出现:
输入数字3后出现
然后输入y后出现
则Matlab编译器配置完成。 接着输入mex –setup 过程如上不再重复!
完成配置后,首先,在Matlab2010b中创建.m文件如下: function y = sincplot(n) x1 = 0.01:0.01:n*pi; y1 = sin(x1)./x1;
x2 = -n*pi:0.01:-0.01; y2 = sin(x2)./x2; y = [y2 y1];
plot([x2 x1],y)
保存为sinplot.m然后进行编译。在编译的时候特别注意以下几点: 在我的MATLAB编译时并不生成.ctf文件。 可以做如下修改:
打开MATLAB安装路径:
D:\\MATLAB\\R2010b\\toolbox\\compiler\\bundles
在bundles下正常情况下应该找不到cppsharedlib文件,只能找到csharedlib 那么我们就自己建一个文件命名为cppsharedlib,然后在里面输入 -C -W lib:%1% -T link:lib
加入-C只是为了生成.ctf文件。否则可能会导致不成功?. 接下来在命令窗口输入以下命令:
mcc -B cppsharedlib:libsincplot sincplot.m 编译产生的文件如下图所示:
(如果没有前面的设置则不能产生libsinplot.h只能产生一个sinplot.h最后导致失败)
其中我们要用到的文件为libsincplot.h,libsincplot.dll,libsincplot.lib,libsincplot.ctf。 接下来我们打开VC++6.0.创建一个名称为Sinplot的MFC单文档应用工程: 第一步:
第二步:选择Single document
第三步:点击Finish 工程创建完毕。
将MATLAB 2010b编译生成的libsincplot.h,libsincplot.dll,libsincplot.lib,libsincplot.ctf。 四个文件拷贝到刚建立的Sinplot工程中,并将libsincplot.dll和libsincplot.ctf。拷贝到Debug文件夹下。
然后对VC++6.0进行配置以便在VC中调用MATLAB动态链接库 1.点击:
TOOLS—options—detectories— includes files中添加MATLAB路径
D:\\MATLAB\\R2010b\\EXTERN\\INCLUDE
D:\\MATLAB\\R2010b\\EXTERN\\INCLUDE\\WIN32 Library files中添加
D:\\MATLAB\\R2010b\\EXTERN\\LIB\\WIN32\\MICROSOFT
以上设置是对VC软件进行的设置,只需设置一次即可。
2.进行项目必要的设置。
VC++主界面进入project>Settings,点C/C++选项卡,Category选择Preprocessor,Additional include directories下填入如下路径D:\\MATLAB\\R2010a\\extern\\include(你的MATLAB安装路径)
点“link”选项卡,Category选择General,在下面的Object/library modules 那栏的最后添加libsincplot.lib mclmcrrt.lib
其中libsincplot.lib,是MATLAB中编译时,产生的lib文件,两个库之间以及和其他库以空格隔开。 然后Category选择input,Additional library path下填写:D:\\MATLAB\\R2010b\\extern\\lib\\win32\\microsoft
然后点击OK完成对VC++6.0的配置。
以下为编程问题:
在CSinplotView的包含头文件 #include \
2 定义要用到的变量,maArray是MATLAB和VC的接口数据类型,红色的为增加的代码。
class CSinplotView : public CView {
protected: // create from serialization only CSinplotView(); DECLARE_DYNCREATE(CSinplotView) // Attributes public: CSinplotDoc* GetDocument();
// Operations public: mxArray *pArrayIn; mxArray *pArrayOut; int isOK; int m_isInView; // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CSinplotView)
3 在构造函数中进行初始化:mclInitializeApplication,libsincplot1Initialize #include \#include \#include \#include \#include \#ifdef _DEBUG
#define new DEBUG_NEW #undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
///////////////////////////////////////////////////////////////////////////// // CSinplotView
IMPLEMENT_DYNCREATE(CSinplotView, CView) BEGIN_MESSAGE_MAP(CSinplotView, CView) //{{AFX_MSG_MAP(CSinplotView) ON_COMMAND(plot, Onplot) //}}AFX_MSG_MAP // Standard printing commands ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////////////// // CSinplotView construction/destruction CSinplotView::CSinplotView() { // TODO: add construction code here isOK = mclInitializeApplication(NULL,0); if (!isOK) { MessageBox(\初始化app失败\ } isOK=libsincplotInitialize(); if (!isOK) { MessageBox(\初始化lib失败\ } this->pArrayIn=NULL; this->pArrayOut=NULL; m_isInView=0; }
CSinplotView::~CSinplotView() { if(pArrayIn) { mxDestroyArray(pArrayIn); }
正在阅读:
VC++6.0与MATLAB - R2010b混合编程实例 - 图文09-28
山东省聊城市2018年中考地理试卷(word版 含答案)07-26
协同办公管理系统需求调研表05-25
记南安市江滨南路一期工程开工新闻通稿06-14
2022年开学新计划【精彩8篇】03-26
干式变压器温度控制仪表使用说明书LD-B10说明书10-12
江苏两会2017,江苏省两会201702-15
电气自动化毕业设计课程04-20
2018-2019年张家口市蔚县马宝玉小学一年级上册数学第一次模拟月考含答案09-11
四年级美术《生活中暖色》教学设计03-30
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实例
- 混合
- 编程
- 图文
- MATLAB
- R2010b
- 6.0
- VC