MATLAB和VS混合编程
2016-05-14 02:44
453 查看
查了很多资料,最后终于成功了,不容易记录一下。
MATLAB R2014a,VS2013;
首先在matlab编写一个测试函数
function [sum,prod]=sum_prod(p1,p2)
sum=p1+p2;
prod=p1.*p2;
在命令框输入 mex -setup
点击第一个C++
然后输 mbuild -setup
点C++
输mcc -W cpplib:sum_prod -T link:lib sum_prod.m ,然后等待
如果失败,可能破解版不完全,提供百度云链接:http://pan.baidu.com/s/1qY05zn2 密码:qwr6,下载后将证书替换,证书名改为你的电脑之前的名字,还有相应版本号中的文件替代即可。
cpplib:sum_prod 中sum_prod为生成的文件名,sum_prod.m 为函数所在的文件名
需要用到的有dll,lib,.h
接着打开VS2013创建一个空项目
点菜单的项目-》属性,包含目录添加生成lib的所在目录,和matlab的include目录,我的是D:\Documents\MATLAB;D:\matlab\extern\include;
库目录添加生成lib的所在目录和matlab的lib目录,我的是D:\Documents\MATLAB;D:\matlab\extern\lib\win64\microsoft;
点击链接器
添加3个lib
sum_prod.lib;mclmcrrt.lib;mclmcr.lib
然后新建 main.cpp作为测试
点配置管理器
选择X64即可
至此,全部完成。
MATLAB R2014a,VS2013;
首先在matlab编写一个测试函数
function [sum,prod]=sum_prod(p1,p2)
sum=p1+p2;
prod=p1.*p2;
在命令框输入 mex -setup
点击第一个C++
然后输 mbuild -setup
点C++
输mcc -W cpplib:sum_prod -T link:lib sum_prod.m ,然后等待
如果失败,可能破解版不完全,提供百度云链接:http://pan.baidu.com/s/1qY05zn2 密码:qwr6,下载后将证书替换,证书名改为你的电脑之前的名字,还有相应版本号中的文件替代即可。
cpplib:sum_prod 中sum_prod为生成的文件名,sum_prod.m 为函数所在的文件名
需要用到的有dll,lib,.h
接着打开VS2013创建一个空项目
点菜单的项目-》属性,包含目录添加生成lib的所在目录,和matlab的include目录,我的是D:\Documents\MATLAB;D:\matlab\extern\include;
库目录添加生成lib的所在目录和matlab的lib目录,我的是D:\Documents\MATLAB;D:\matlab\extern\lib\win64\microsoft;
点击链接器
添加3个lib
sum_prod.lib;mclmcrrt.lib;mclmcr.lib
然后新建 main.cpp作为测试
#include <iostream> #include "sum_prod.h" using namespace std; int main() { if (!sum_prodInitialize()) //必须写 { //cout << "初始化失败!" << endl; return -1; } double p[2][2] = { 1, 2, 3, 4 }; mwArray X(2, 2, mxDOUBLE_CLASS); mwArray Y(2, 2, mxDOUBLE_CLASS); mwArray SUM(2, 2, mxDOUBLE_CLASS); mwArray PROD(2, 2, mxDOUBLE_CLASS); for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { X(i + 1, j + 1) = p[i][j]; Y(i + 1, j + 1) = p[i][j]; } } sum_prod(2, SUM, PROD, X, Y); double sum[2][2], prod[2][2]; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { sum[i][j]=SUM(i + 1, j + 1) ; prod[i][j]=PROD(i + 1, j + 1) ; } } for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { cout << sum[i][j]; } cout << endl; } cout << endl; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { cout << prod[i][j]; } cout << endl; } cout << endl; system("pause"); return 0; }这里会报错,由于我的电脑是64位,所以需要改
点配置管理器
选择X64即可
至此,全部完成。
相关文章推荐
- 链接库动态链接库详细介绍
- VC6.0如何创建以及调用动态链接库实例详解
- ASP.NET/C#中如何调用动态链接库DLL
- Lua5.1中加载dll动态链接库的方法
- GCC 编译使用动态链接库和静态链接库的方法
- linux动态链接库使用方法分享
- 在Visual Studio中用C++语言创建DLL动态链接库图文教程
- VS2013连接MySQL5.6成功案例一枚
- Python调用C/C++动态链接库的方法详解
- Java调用动态链接库
- VS2013设置护眼背景颜色
- ASP.NET/C#中如何调用动态链接库DLL
- VS2013连接MySQL5.6成功案例一枚
- 解决:开机提示找不到iertutil.dll,无法定位序数681于动态链接库iertutil.dll上
- 动态链接库-DLL探秘
- linux静态链接库与动态链接库的区别及动态库的创建
- Linux编程简介——动态链接库
- linux静态链接库与动态链接库的区别及动态库的创建
- 静态链接与动态链接的异同
- Win8.1下FreeImage.lib库的配置和简单使用