vs2010与matlab2009a混合编程

来源:互联网 发布:淘宝天猫超市有客服吗 编辑:程序博客网 时间:2024/06/05 07:14

1. 环境配置

Matlab 命令行输入:

mbuild – setup

选择 n

没有vs2010,选择vs2008 SP1,

在编译器路径设置为安装的vs2010的路径即可

输入deploytool,出现如下

 

 

 

在右边选择新建,出现如下界面:

 

选择cc++shared  library

新建工程,将编写的m文件加入该工程,编译后

产生链接库存放在,默认下在distrib文件夹下

 

Vs2010配置:

生成vc程序,在vc程序初始化中添加如下,若matlab工程为MyFun

 if( ! mclInitializeApplication(NULL,0) )
 {
    AfxMessageBox(_T("Could not initialize the application.n"));
    exit(1);
 }
 // 初始化库
 if (!MyFunInitialize() )
 {
    AfxMessageBox(_T("Could not initialize the library.n"));
    exit(1);
  }

  

在vc程序退出时添加

 MyFunTerminate();

 mclTerminateApplication();

注意:mclInitializeApplication(NULL,0)在程序中只能调用一次

1. 在新建工程下右键选择属性,在附加包含目录下增加matlabinclude路径

2. 在附加库目录中增加matlablib路径

 

编译出现问题

1. 出现char16_t重定义

解决办法:在vs2010程序中引用matlab文件前加入

如在:

#include "mclmcrrt.h"
#include "mclcppclass.h"
#include "MyFun.h"

之前添加:

#include "yvals.h"

#if (_MSC_VER >= 1600)

#define __STDC_UTF_16__

#endif

2. 出现_INTERFACE_INFO重定义

解决办法:

vs2010工程下的targetvar.h中添加

#ifndef WINVER                                        //  程序中没有定义WINVER宏时

#define WINVER 0x0501                          //  定义WINVER0x0600    

#endif

 #ifndef _WIN32_WINNT                          // 程序中没有定义_WIN32_WINNT宏时

#define _WIN32_WINNT 0x0501             // 定义_WIN32_WINNT0x0600    

#endif

 

上面加入语句需要在

#include <SDKDDKVer.h>

之前

0 0
原创粉丝点击