vs2012与matlab2016a混合编程配置过程

本文详细介绍了如何在VS2012中集成Matlab2016a,包括配置环境、设置路径以及通过示例代码验证集成成功的方法。适合需要在C++环境中调用Matlab功能的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平台: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

matlab在关联编译器的时候 会出现找不到编译器的问题 原因是matlab要找windows sdk的mt exe 本文件修改方法也是根据wiills的那篇“matlab找不到编译器的问题”(matlab无法找到vs2012)的修改方法进行的 请参考:http: download youkuaiyun.com 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 youkuaiyun.com downlo [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值