前言

项目算法中包含了不同编译工具的代码,分别是matlab和VS,需要将二者结合起来,统一在同一个系统工作,此时就要用到matlab和vs混合编程。

在matlab中将.m文件编译生成库文件等供外部的vs程序调用,实现混合编程。

实现步骤

1.matlab中算法代码编译生成库文件、头文件等;

2.创建并配置VS工程;

3.安装配置MCR方便软件移植;

实现环境

matlab版本:matlab2015a

vs版本:vs2013

PC系统:win7_x64

实现过程

1.matlab中算法代码编译生成库文件、头文件等;

1)在matlab写一个测试代码(一般是系统算法对应matlab函数);

function [sum, prod] = sum_prod(p1, p2)

sum = p1+p2;

prod = p1.*p2;

end

2)生成库文件、头文件等;

方法有两种,一种是使用matlab命令行,一种是使用matlab菜单栏工具。本文使用的是第二种方法。

方法一:

(1)在命令行输入命令!mcc查看是否带有mcc编译器;

(2)命令窗口输入mbuild -setup选择要使用的c++编译器,本文选择的是mex -setup C++ -client MBUILD 编译器;

(3)命令窗口输入deploytool命令,剩余步骤参考方法二;

方法二:

(1)matlab命令行输入deploytool即可;

(2)输入deploytool命令之后出现以下对话框,选择Library Compiler选项;

(3)按照下图指示步骤生成文件;

(4)生成的文件夹如下图,所需要的库文件、头文件在for_redistribution_files_only文件夹中;

(5)将相关库文件、头文件复制到VS工程目录下;

2.创建并配置VS工程;

1)创建VS工程,新建源文件作为测试;

#include

#include "sum_prod.h"

#include "mclmcrrt.h"

#include "mclcppclass.h"

#pragma comment(lib,"mclmcrrt.lib")

#pragma comment(lib,"sum_prod.lib")

using namespace std;

int main()

{

if (!sum_prodInitialize()) //必须写

{

//cout << "初始化失败!" << endl;

return -;

}

double p[][] = { , , , };

mwArray X(, , mxDOUBLE_CLASS);

mwArray Y(, , mxDOUBLE_CLASS);

mwArray SUM(, , mxDOUBLE_CLASS);

mwArray PROD(, , mxDOUBLE_CLASS);

for (int i = ; i < ; i++)

{

for (int j = ; j < ; j++)

{

X(i + , j + ) = p[i][j];

Y(i + , j + ) = p[i][j];

}

}

sum_prod(, SUM, PROD, X, Y);

double sum[][], prod[][];

for (int i = ; i < ; i++)

{

for (int j = ; j < ; j++)

{

sum[i][j] = SUM(i + , j + );

prod[i][j] = PROD(i + , j + );

}

}

for (int i = ; i < ; i++)

{

for (int j = ; j < ; j++)

{

cout << sum[i][j];

}

cout << endl;

}

cout << endl;

for (int i = ; i < ; i++)

{

for (int j = ; j < ; j++)

{

cout << prod[i][j];

}

cout << endl;

}

cout << endl;

system("pause");

return ;

}

2)配置VS工程;

(1)配置matlab的属性(博客中使用的是matlab2015a版本);

项目属性VC++目录选型中添加包含目录和库目录;

包含目录:C:\Program Files\MATLAB\MATLAB Production Server\R2015a\extern\include;

库目录:C:\Program Files\MATLAB\MATLAB Production Server\R2015a\extern\lib\win64\microsoft;

(2)链接器输入选项添加附加依赖项;

mclmcrrt.lib;

sum_prod.lib

另一种方法是直接在源文件中添加语句;

#pragma comment(lib,"mclmcrrt.lib")

#pragma comment(lib,"sum_prod.lib")

注意:

不同的源文件对应的lib可能会有不同;

一般如果缺少lib的话会出现如下图所示的报错信息;

(3)另,直接将打印信息输出到控制台,将会占用内存,可以使用下图所示的方法将打印信息保存在txt文件中;

打开cmd,定位到可执行文件所在目录,按照下图操作即可得到日志文件log.txt;

3.安装配置MCR方便软件移植;

要想在没有安装matlab的电脑上运行matlab程序,不想安装matlab,需要安装MCR编译器;

1)MCR安装程序;

(1)官网math上下载;

(2)在matlab安装目录下复制;

文件目录:(我的是C:\Program Files\MATLAB\MATLAB Production Server\R2015a\toolbox\compiler\deploy\win64)

.\R2015a\toolbox\compiler\deploy\win64;

2)安装MCR编译器;

(1)点击安装MCRInstaller.exe;

(2)创建安装目录;

(3)开始安装,接受许可条款;

(4)选择安装路径,等待安装完成即可;

本文使用的是默认安装;

3)配置环境变量;

安装完成之后需要将MCR编译器安装目录添加到系统环境变量中;

(1)我的电脑>属性>高级系统设置;

(2)在系统属性高级中点击环境变量;

(3)系统变量中新建环境变量;

(4)编辑添加系统变量;

变量值就是MCR安装目录(本文默认目录C:\Program Files\MATLAB\MATLAB Runtime\v85\runtime\win64);

参考

1.混合编程:http://blog.csdn.net/wind_liang/article/details/51402224

2.MCR安装:https://jingyan.baidu.com/article/19020a0a057462529d2842d6.html

3.http://blog.csdn.net/sjhuangx/article/details/49305237

做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。

matlab和c&plus;&plus;混合编程---matlab和vs的环境配置问题及方法和步骤(转载)

matlab和c++混合编程---方法和步骤 matlab和c++混合编程---matlab和vs的环境配置问题 摘要:Matlab具有很强的数值计算和分析等能力,而C/C++是目前最为流行的高级程序 ...

&lbrack;转&rsqb; Matlab与C&plus;&plus;混合编程,添加OpenCV库

matlab与vs混合编程,matlab与vs混合编程/matlab移植相关推荐

  1. 在Matlab中使用mex函数进行C/C++混合编程

    最近写了个Matlab程序,好慢呐--所以开始学习Matlab与C/C++混合编程.下面写了个测试代码,显示一个Double类型矩阵中的元素. 源代码 [cpp] view plaincopyprin ...

  2. 【转】matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件

    转自:matlab与C/C++混合编程--在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客 date version comments ...

  3. matlab与vc混合编程指导书.doc,vc与matlab混合编程—基于com.doc

    vc与matlab混合编程-基于com.doc VC与MATLAB混合编程基于COM2010年03月21日星期日1118注意旨在提供一份VC调用MATLAB的快速试验参考和一些实际经验,不保证所有内容 ...

  4. matlab仿真的英文文献,matlab 外文翻译 外文文献 英文文献 MATALAB 混合仿真平台控制算法的概述...

    matlab 外文翻译 外文文献 英文文献 MATALAB 混合仿真平台控制算法的概述 MATALAB 混合仿真平台控制算法的概述 MATALB 混合仿真平台,即为将硬件引入到仿真回路里的半实物仿真系 ...

  5. C语言编程实现求解应力向量,基于MATLAB与Visual+C%2b%2b实现主应力的编程求解.pdf...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 基于MATLAB与Visual+C%2b%2b实 ...

  6. matlab中的routte,matlab外文翻译外文文献英文文献MATALAB混合仿真平台控制算法的概述...

    <matlab外文翻译外文文献英文文献MATALAB混合仿真平台控制算法的概述>由会员分享,可在线阅读,更多相关<matlab外文翻译外文文献英文文献MATALAB混合仿真平台控制算 ...

  7. 【Matlab图像去噪】改进非局部均值红外图像混合噪声【含源码 1640期】

    一.代码运行视频(哔哩哔哩) [Matlab图像去噪]改进非局部均值红外图像混合噪声[含源码 1640期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 李方 ...

  8. 用matlab编程节点电压法求电路,MATLAB在电路中的应用

    <MATLAB在电路中的应用>由会员分享,可在线阅读,更多相关<MATLAB在电路中的应用(59页珍藏版)>请在人人文库网上搜索. 1.MATLAB应用(三) Matlab在电 ...

  9. matlab留学生作业代做,25877留学生作业代做、代写MATLAB,R编程设计作业、代做MATLAB/R课程作业、代写portfolio作业...

    25877留学生作业代做.代写MATLAB,R编程设计作业.代做MATLAB/R课程作业.代写portfolio作业 日期:2019-06-10 09:48 Financial Markets Ins ...

  10. matlab制作动画并保存,[转载]Matlab中动画的实现、制作和保存(转载Matlab技术论坛)...

    Matlab中动画的实现.制作和保存(转载Matlab技术论坛) 本帖由Matlab技术论坛原创,原帖参见 http://www.matlabsky.com/thread-592-1-1.html 光 ...

最新文章

  1. 卸载 插件_永远都不会卸载的CAD插件,好用到怀疑人生
  2. Leetcode题库 110.平衡二叉树(递归 C实现)
  3. vscode remote 第三方库_分钟将vscode撸成小霸王
  4. linux mysql添加用户名并实现远程访问
  5. Galera Cluster大坑的解决方案
  6. 【转载】在windows上部署使用Redis
  7. 有窗体的闭合导线计算程序(C#)
  8. sap 服务采购订单研究
  9. 深入浅出带你了解磁共振成像基本原理
  10. js监听移动端横屏和竖屏状态
  11. 过去式加ed的发音_过去式,过去分词,加ed 后的读法
  12. xp计算机图标怎么设置在桌面显示,电脑系统是XP的,界面的“我的电脑”图标不知怎么变成快捷方式了...
  13. java结业作业_学习平台-北语201606考试批次《JAVA语言程序设计》(结课作业)答案-成人高等教育_成人本科教育报名_远程网络教育学院-江苏学历网报名服务中心...
  14. 激活 win10 企业版2016长期服务版本
  15. 鸿蒙系统主页面斜纹,《中国美术欣赏》[精选].doc
  16. 服务器声卡如何虚拟,服务器没声卡远程桌面连接怎么实现听到服务器的声音
  17. 初学者c语言编程软件_C初学者手册:仅需几个小时即可学习C编程语言基础知识
  18. 计算机Word多选题试题,计算机一级考试Word试题
  19. ubuntu系统安装时的分区方案
  20. MyEclipse 注册码分享

热门文章

  1. hikari数据源配置类_SpringBoot2集成Mybatis Hikari多数据源配置
  2. Mac下安装与使用Medis
  3. greenplum查询表结构java_Greenplum小把戏 - 几个常用数据库对象大小查询SQL
  4. 基于STM32单片机三色全彩RGB LED灯控制系统 原理图PCB程序设计
  5. 中国兽医血液分析仪行业市场供需与战略研究报告
  6. win10添加右键sublime打开方式
  7. eslint : 无法加载文件 C:\Users\user\AppData\Roaming\npm\eslint.ps1
  8. 【戒焦戒躁,can win】Linux--inode
  9. Android多媒体框架(二)Codec初始化及Omx组件创建
  10. 腾讯AI开放平台使用尝试:账号开通/应用创建/能力开通