将matlab中的函数编译成C++ 并打包在其他电脑上运行
来源:互联网 发布:手机淘宝积分怎么查询 编辑:程序博客网 时间:2024/06/03 17:42
本机环境:matlab2014a(64bit)+VS2012
第一步:准备好自己的matlab函数(这一步不需要多说吧)
我的函数如下:
第二步:选择编译器
在matlab中输入命令:mex -setup,出现以下内容,使用鼠标单击,为C++语言选择编译器
第三步:编译
编译有图形交互的方式和输入命令的方式,我们这里采用后者,直接输入如下命令:
mcc -W cpplib:CnnTrain -T link:lib Train_CNN.m
其中 CnnTrain 表示要生成的lib,cpp ,dll等文件的名字,Train_CNN.m是需要编译的函数文件名
编译之后获得的文件如下:
我们只需要其中的lib,h,dll文件。
第四步:在VS2012中调用编译好的文件
1.首先在新建一个空白的WIN32工程,我建的工程名字是C++ Train
2.组织环境,将编译生成的文件以及环境文件都包含进来:
在工程根目录中添加文件夹MatlabToC++,并且在这个文件夹中新建lib和include文件夹
将之前生成的CnnTrain.lib复制到lib文件夹中
将 matlab安装文件夹\extern\lib\win64\microsoft中的mclmcrrt.lib和mclmcr.lib复制到lib文件夹中
lib文件夹内容如下:
将之前生成的CnnTrain.h复制到include文件夹中
将 matlab安装文件夹\extern\include\win64中的头文件mwcomutil.h复制到include文件夹中
将matlab安装文件夹\extern\include中的从mat.h往下的所有头文件复制到include文件夹中
最后include文件夹内容如下:
然后在工程中添加头文件路径以及lib路径
VC++ Directories中设置如下
Link->Input中设置如下:
3编写程序如下
并写上头文件
如果是64位matlab程序也需要进行设置成x64
先编译一次,肯定会提示缺少dll,然后将CnnTrain.dll添加到相应的Debug(Release)文件夹中
再编译一次,可以正常运行了。
第五步 在其他电脑上运行本程序,如何打包
其实第四步中我们已经将大部分环境所需的头文件以及lib打包到本工程中了
但是这还不够,要在其他电脑上运行本程序,必须在目标电脑上安装matlab官方提供的MSR
这部分请参见官方网站 https://cn.mathworks.com/products/compiler/mcr.html?refresh=true
- 将matlab中的函数编译成C++ 并打包在其他电脑上运行
- MATLAB .M文件编译成.EXE并在无MATLAB的电脑上运行的一个方法
- 在Linux/Solaris上,将c文件编译成dll文件的方法
- C++编好的程序怎么打包 最后可以在电脑上运行
- C代码编译成在android上的可执行程序
- 如何将VC++程序纯净打包(VS2013+OpenCV 2.4.9项目生成EXE文件如何在其他电脑上直接运行)
- WIN 7下将java 文件编译成jar 文件并运行
- 浅析将matlab函数编译成dll供Cpp调用的方法
- MATLAB将c/cpp文件编译成mex32/mex64文件的方法
- 如何使用MATLAB将c/cpp文件编译成mex32/mex64文件
- 多个.c文件编译成运行
- 将c代码编译成dll文件
- 如何将LabVIEW程序打包在没有安装LabVIEW的电脑上运行
- C语言编译成可执行文件的模板,并放到虚拟机中运行。
- C#程序发布(之后即可在其他电脑上运行)
- 如何解决Qt程序在其他电脑上无法运行的问题(Qt程序打包发布)
- 如何解决Qt程序在其他电脑上无法运行的问题(Qt程序打包发布)
- 将本地jar包手动拷贝到Maven库中,在其他电脑上用Maven打包时出错
- python 简约策略
- linux socket server
- Android中对assets目录下数据库操作
- MATLAB 制作课执行文件遇到问题 “Test checkout of feature 'Compiler' failed”
- 正则表达式-各种数字验证
- 将matlab中的函数编译成C++ 并打包在其他电脑上运行
- Toradex 为基于NXP i.MX7的计算机模块提供Windows Embedded Compact 操作系统支持
- Spring 如何读取properties文件内容
- 解决Hibernate:could not initialize proxy - no Session(申明:来源于网络)
- mybatis date类型引发问题
- [生存志] 第66节 子贡使五国
- Java操作HBase对象
- AJXA基础入门之ECMAScipt
- 判断一个数字是否重复并且重复几次