64位系统vs2010平台下实现C++与matlab R2014混合编程方法示例

来源:互联网 发布:三菱fx2n pid编程手册 编辑:程序博客网 时间:2024/06/03 18:22

开发环境:VS2010 premuim+matlab2014b+win7 64位操作系统,测试成功。

步骤一:安装VS2010

安装VS2010旗舰版,建议默认安装路径C:\Program Files(x86)\Microsoft Visual Studio 10.0,安装成功后会自动添加环境变量。

下载地址http://pan.baidu.com/s/1jG1vu78

步骤二:安装matlab

安装matlab R2014b,破解版下载http://pan.baidu.com/s/1jGlMs5o ,安装成功后记得将安装路径D:\Programfiles\MATLAB\R2014b\bin\win64添加至环境变量,可根据自己安装目录而定;

步骤三:matlab动态链接库文件编译生成

1)  编写示例文件add.m

function [a,b]=add(x,y)

    a=2*x+y;

    b=x+2*y;

end

 

2) 进入matlab主界面,如下图:

 

3)  在控制台输入deploytool命令,调用打包程序,如下图:

 

4)单击第二项Library Compiler,进入库文件编译程序界面,如下图:

 

5)根据需要,勾选C++ Shared Library选项,在Add Exported Functions框右侧点击添加需要打包的Function脚本文件,Library information部分根据需要填写,勾选下面两项,

最后配置如下图所示:


 

6)单击可配置其他编译生成控制命令(暂时不考虑)和打包后文件输出路径,如下图:


 

7)单击,开始编译,打包成功后的界面如下:

       生成文件目录如下:


       我们需要用C++进行调用的文件在第二个目录for_redistribution_files_only下前三个,如下图,以作备用。

 

步骤四:新建VS2010测试工程,并进行相关配置

1)  打开VS2010主界面,新建C++空项目,如下图:


2)  设置解决方案生成方式为release,解决方案生成平台设置为x64,如下图:

 

3)  配置工程属性,打开工程属性配置界面,如下图:

 

点击C/C++/General/AdditionalInclude Directories处添加路径,如下图:

 

在Linker/General/ Additional IncludeDirectories处添加路径,如下图:

 

在Linker/Input/Additional Dependencies处添加如下5个lib文件,如下图:

 

以上工程配置完毕。

4)  在源文件单击右键,添加新C++测试文件matlabdlltest.cpp,编写代码如下:

#include <iostream>

#include "mclmcr.h"

#include "matrix.h"

#include "mclcppclass.h"

#include "add.h"

 

using namespace std;

 

int main()

{

if(!addInitialize())

{

        cout<<"Couldnot initialize lib:myadd!"<<endl;

        exit(0);

}

   mwArraya(1,1,mxDOUBLE_CLASS); 

   mwArray b(1,1,mxDOUBLE_CLASS); 

   a(1,1)=20; 

   b(1,1)=30; 

   mwArray x(1,1,mxDOUBLE_CLASS); 

   mwArray y(1,1,mxDOUBLE_CLASS); 

   //输出参数个数。输出参数,输入参数。 

   add(2,x,y,a,b);   

   double*i=new double; 

   double *j=new double; 

   x.GetData(i,1); 

   y.GetData(j,1);

   std::cout<<"x="<<*i<<"  y="<<*j<<std::endl;

   getchar(); 

   return 0; 

}

 

5)  copy matlab生成的add.h、add.lib至源代码所在目录,如:E:\Coding_HOME\matlabdlltest\matlabdlltest

copy 动态库文件add.dll至你的工程工作目录,如:E:\Coding_HOME\matlabdlltest\x64\Release

 

6)  点击build进行生成,此时运行程序会提示缺少一系列dll文件,比如下图所示:

 

解决方法:copy 工作目录x64/release下的如下两个文件

至matlab安装目录下的如下目录:D:\Programfiles\MATLAB\R2014b\bin\win64,再次点击matlabdlltest.exe程序执行成功,测试通过,控制台界面如下图:

 


附源代码:http://pan.baidu.com/s/1ntJ6iCD


另,配置过程中可能会遇到的问题及解决办法:

1.      提示安装VCREDIST_X86补丁,安装不上时参考:

http://jingyan.baidu.com/article/4e5b3e19521d9291911e247b.html

 

2.      缺少mclmcrrt713.dll通过安装MCRInstaller.exe修复,路径为D:\Program Files\matlab R2010a\toolbox\compiler\deploy\win32;

 

3.      window SDK7.1下载

http://www.mathworks.com/support/compilers/R2014b/win64.html

 

4.      错误:应用程序无法正常启动0xc000007b,请单击“确定”关闭程序。

       http://jingyan.baidu.com/article/456c463b9bc4350a58314498.html
1 0
原创粉丝点击