MatCom_C++(MatCom_C++混合编程)

MatCom_C++混合编程

 

安装注意:机子上一定要有VC6.0的编译器(如何安装,参考网上下载的文档)

实践部分:

 

文件的配置:

一.对于VC++6.0

1.拷贝matlib.h和v450v.lib文件到当前工作路径(不拷贝也行)

 

2.在VC6.0的Workspace中直接添加v450v.lib

 

     或者:Tools->options->Directories-:Library files ->添加库文件v4501v所在的路径 。然后 Project->Settings->Link:在Object/library modules下添加入v4501v.lib

 

        

3.Tools->options->Directories-:Include files ->填加matlib.h所在的路径。(这个是添加头文件)

 

二.对于VS2010

1.项目->XX属性->配置属性:VC++目录:包含目录->填加matlib.h所在的路径。2

2. 项目->XX属性->配置属性:VC++目录:库目录->添加库文件v4501v所在的路径(在 连接器:常规->添加库文件v4501v所在的路径 也可以)。

 

3.项目->XX属性->配置属性:连接器:输入->附加依赖项->(填入)v4501v.lib

 

4.也可以像VC6.0一样,不配置v4501v.lib文件的路径,不在“附加依赖项”下填入v4501v.lib ,直接在解决方案管理器里添加v4501v.lib即可。

 

三.

1.如果把matlib.h 拷贝到当前工作目录中,则不需要包含目录了,只需要把#include <matlib.h>改成 include ”matlib.h”。因为双引号表示在当前的工作路径中寻找该文件。

 

2.直接把v4501v.lib拷贝到当前的工作目录中,也不需要把它的路径包含到库目录中了,只需要在“附加依赖项”下填入v4501v.lib即可。

 

*v4501v.lib改成其它名字是无所谓的,当然,还是直接添加v4501v.lib最方便了,即不需要把路径包含到库目录中,又不需要在附加依赖项下些入v4501.lib。

 

四.代码:(通过MIDEVA编译两个cpp源文件,一个是实现函数功能的源文件,一个是调用函数的源文件。)

 

#include<matlib.h>

#include<iostream>

usingnamespacestd;

 

Mmclass1func(Mmf1,Mmf2,i_o_t,Mm&maxf__o,Mm&minf__o){

       begin_scope

              f1.setname("f1");f2.setname("f2");

       dMm(maxf);dMm(minf);dMm(t);dMm(y1);dMm(y2);

 

#line1"c:/matcom45/my_mfile/class1func.m"

       call_stack_begin;

#line1"c:/matcom45/my_mfile/class1func.m"

       // nargin, nargout entry code

       doubleold_nargin=nargin_val;if(!nargin_set)nargin_val=2.0;

       nargin_set=0;

       doubleold_nargout=nargout_val;if(!nargout_set)nargout_val=2.0;

       nargout_set=0;

 

       // translated code

 

#line2"c:/matcom45/my_mfile/class1func.m"

       _   t=linspace(0.0,1.0,400.0);

#line3"c:/matcom45/my_mfile/class1func.m"

       _   y1=sin(2.0*pi*f1*t);

#line4"c:/matcom45/my_mfile/class1func.m"

       _   y2=cos(2.0*pi*f1*t);

 

#line6"c:/matcom45/my_mfile/class1func.m"

       _   plot((CL(t),y1));

#line7"c:/matcom45/my_mfile/class1func.m"

       _   display(figure());

#line7"c:/matcom45/my_mfile/class1func.m"

       //分开画出第二条曲线

#line8"c:/matcom45/my_mfile/class1func.m"

       _   plot((CL(t),y2));

 

#line10"c:/matcom45/my_mfile/class1func.m"

       _   maxf=max(f1,f2);

#line11"c:/matcom45/my_mfile/class1func.m"

       _   minf=min(f1,f2);

 

       call_stack_end;

 

       // nargin, nargout exit code

       nargin_val=old_nargin;nargout_val=old_nargout;

 

       // function exit code

       f1.setname(NULL);f2.setname(NULL);

       maxf__o=maxf;minf__o=minf;

       returnx_M;

       end_scope

}

 

 

Mmclass1func(Mmf1,Mmf2){

       begin_scope

              doubleold_nargin=nargin_val;nargin_val=2.0;nargin_set=1;

       doubleold_nargout=nargout_val;nargout_val=1.0;nargout_set=1;

       dMm(maxf__o);dMm(minf__o);

       class1func(f1,f2,i_o,maxf__o,minf__o);

       nargout_val=old_nargout;

       nargin_val=old_nargin;

       return(maxf__o);

       end_scope

}

 

 

intmain()

{

              initM(MATCOM_VERSION);//初始化Matlab_C++库

 

              dMm(f1);dMm(f2);dMm(maxf);dMm(minf);

 

              #line1"c:/matcom45/my_mfile/class1call.m"

              call_stack_begin;

              #line1"c:/matcom45/my_mfile/class1call.m"

              _f1=2.0;

              #line2"c:/matcom45/my_mfile/class1call.m"

              _f2=4.0;

              #line3"c:/matcom45/my_mfile/class1call.m"

              _/*[maxf,minf] = */class1func(f1,f2,i_o,maxf,minf);display(maxf);display(minf);

              call_stack_end;

 

              exitM();//结束使用Matlab_C++库

              inti;

              cin>>i;

 

              return0;

}

 

转载于:https://www.cnblogs.com/daxiaoyuyu/archive/2012/10/05/2712388.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值