vs2012与matlab2016a混合编程配置过程

平台:vs2012和Matlab2016a

过程:

首先当然是先在电脑上安装上vs2012和Matlab2016a,

接下来看图:首先用VS12新建一个空项目工程:win32控制台应用程序->空项目,点击完成

接下来打开 属性管理器->找到x64的(debug),如果没有就新建一个

然后找到通用属性->VC++目录->包含目录,然后按照图中所做

然后选择库目录,再按照图中所做

 

接下来找到链接器->常规->附加库目录,图

再找到输入->附加依赖项,图

然后就Okay了,找一段代码测试,输出结果(用的网上的代码)

#include <iostream>
#include <iomanip>
using namespace std;
#include <engine.h>
#include <string.h>
void main(){ // 定义循环变量
int i = 0, j = 0;
// 状态变量
int nStatus = 0;
// 定义MATLAB引擎指针
Engine *ep;
// 定义mxArray变量指针
mxArray *A, *B;
// 定义矩阵数组
// 注意:VC中矩阵的行列次序与MATLAB正好时相反,需要转置。
double arData[3][3] = {{7.5,16.3,9.6},{13.2,8.9,12.3},{9.6,5.4,13.7}}; double arResData[3][3];
// 输出原矩阵
cout<<"原矩阵为:"<<endl;
for(i = 0; i < 3; i++)
{ for(j = 0; j < 3; j++)
{ cout<<setw(10)<<arData[i][j]<<" ";
} cout<<endl;
} // 打开MATLAB引擎
ep = engOpen(NULL);
if(ep == NULL)
{ cout<<"无法打开MATLAB引擎。"<<endl;
exit(EXIT_FAILURE); }
// 是否显示MATLAB窗口:true-显示;false-隐藏。
nStatus = engSetVisible(ep, false);
if(nStatus != 0)
{
cout<<"设置MATLAB显示属性失败。"<<endl;
exit(EXIT_FAILURE);
}
// 为mxArray变量分配空间
A = mxCreateDoubleMatrix(3,3,mxREAL);
B = mxCreateDoubleMatrix(3,3,mxREAL);
if(A == NULL || B == NULL) { cout<<"为mxArray变量分配空间失败。"<<endl;
exit(EXIT_FAILURE); }
// 将数组中的数据写入到mxArray空间中
memcpy((void*)mxGetPr(A),(void*)arData,sizeof(arData));
// 将矩阵变量A写入到MATLAB引擎空间
nStatus = engPutVariable(ep,"A",A);
if(nStatus != 0)
{
cout<<"矩阵变量写入MATLAB引擎空间失败。"<<endl;
exit(EXIT_FAILURE);
}
// 执行引擎命令求矩阵A的逆矩阵
nStatus = engEvalString(ep,"B=inv(A)");
if(nStatus != 0)
{
cout<<"执行MATLAB引擎命令失败。"<<endl;
exit(EXIT_FAILURE);
}
// 从MATLAB引擎空间中读取执行结果
B = engGetVariable(ep,"B");
// 将矩阵变量B复制到数组arResData中
memcpy((void*)arResData,(void*)mxGetPr(B),sizeof(arResData));
// 释放矩阵变量空间
mxDestroyArray(A);
mxDestroyArray(B);
// 关闭MATLAB引擎
engClose(ep);
// 输出计算结果
cout<<"逆矩阵为:"<<endl;
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
cout<<setw(10)<<arResData[i][j]<<" ";
}
cout<<endl;
}

// 暂停程序,查看结果
system("pause");
}

调试结果:

 

转载于:https://www.cnblogs.com/aijiao77/p/7729721.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
matlab在关联编译器的时候 会出现找不到编译器的问题 原因是matlab要找windows sdk的mt exe 本文件修改方法也是根据wiills的那篇“matlab找不到编译器的问题”(matlab无法找到vs2012)的修改方法进行的 请参考:http: download csdn net download wiills 4621079 本次修改如下说明: 1 本次为:Matlab版本为Matlab 2013b(64bit版本)无法关联visual studio 2013编译器的解决方法 2 相对于wiills的修改来说 使用读注册表的方法(不删除添加任何语句 只是修改) 而不是使用绝对路径给出地址 理论上讲如果VS2013的安装路径不是默认的 只要版本对的话把这些文件添加进相对性的目录也是可以关联的 3 使用方法 复制wiills的说明了 哈哈 : 1 把附件相关的5个文件添加到matlab bin win64下面的2个相关目录 2 在matlab 里面运行 mbuild setup 然后选 y 再选择2013的那个项目 再选y 3 这是应该成功了 4 mex setup也是一样的 如果是Matlab 2013b 32位版本的可以复制出matlab bin win64两个相关目录下(mexopts目录下的:msvc110opts stp msvc110opts bat msvc110engmatopts bat和mbuildopts目录下的:msvc110compp bat msvc110compp stp)这五个文件 VS2012的支持文件 对照本文下面给出方法自行修改即可 ">matlab在关联编译器的时候 会出现找不到编译器的问题 原因是matlab要找windows sdk的mt exe 本文件修改方法也是根据wiills的那篇“matlab找不到编译器的问题”(matlab无法找到vs2012)的修改方法进行的 请参考:http: download csdn net downlo [更多]
matlab2012b windows版在关联vs2012编译器的时候,以及无法编译dll。 原因就是matlab默认的编译器的目录配置,include目录以及lib目录配置错误造成的。 如果你的vs目录不是默认的,或者windows是32位版本,或者vs版本不是2012,或者你的mt.exe目录不在Windows kits下,那么有可能需要修改附件里面的相关目录的设置(其实就是mbuild配置cl.exe和mt.exe的目录位置,以及mex配置的include和lib的所需目录),mbuild是编译exe的,mex是编译dll的。我的另一个资源仅处理mbuild配置,未处理mex的配置,所以不能成功编译mex。如果你已经下载过我的另一个资源,请替换mexopts目录下的msvc110opts.bat文件的30和31行代码(而不必下载这个资源): set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include\um;%LINKERDIR%\include\shared;%LINKERDIR%\include\WinRT;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\win8\um\x64;%MATLAB%\extern\lib\win64;%LIB% 附件里有一个word文件,是我修改的注释信息,如果需要手动修改,可以当做帮助来用. mbuild设置方法: 1 把附件相关的4个文件添加到matlab/bin/win64下面的2个相关目录 2 在matlab 里面运行 mbuild -setup, 然后选 y, 再选择2012的那个项目,再选y 3 mbuild应该成功了,此时可以编译为exe文件。 mex设置方法: 1 在matlab 里面运行 mex -setup, 然后选 y, 再选择2012的那个项目,再选y 2 mbuild应该成功了,此时可以编译为dll文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值