matlab2014a + win764bit + vs2013混合编程(.m转成dll供C++调用)
来源:互联网 发布:买p2p问题平台数据 编辑:程序博客网 时间:2024/06/05 14:40
在matlab中可以通过mbuild工具将.m文件编译成dll文件供外部的C++程序调用,这样就可以实现matlab和C++混合编程的目的。
1. 使用matlab生成dll文件
1.1 首先需要带有mcc编译器的matlab软件,这个可以通过在matlab命令行中输入:!mcc
命令来查看
1.2然后再命令窗口输入mbuild -setup
选中要使用的C++编译器,在这里我选择了VS2013的编译器。
选好编译器后再命令窗口输入deploytool
进入编译窗口,
1.3 在弹出的窗口中选择第二项,即生成dll动态链接库的形式,之后会弹出如下窗口
在MATLAB Complie对话框中的左上角APPLICATION TYPE中选择C++ Shared Library类型,在旁边的白色框中点击加号将需要编译成dll的.m文件添加到当前项目中,
1.4之后就可以点击右上角的package按钮生成dll文件了。
点击之后matlab会弹出编译进行的对话框,此时只需要等待既可以了
等待一段时间之后就可以在指定的目录下看到生成dll以及相应的.h和.lib文件
接下来我们用刚刚生成的dll文件进行测试
2.dll简单测试
使用新建一个win32的空的控制台项目,同时将刚刚生成的mysvd.h,mysvd.lib和mysvd.dll拷贝到当前项目文件夹下,然后输入以下代码
#include <iostream>#include "mclmcr.h"#include "matrix.h"#include "mclcppclass.h"#include "mysvd.h"using namespace std;#pragma comment(lib,"mysvd.lib")int main(){ if (!mysvdInitialize()) //初始化,在libmysvd.h中 { cout << "Could not initialize libmysvd!" << endl; exit(0); } double data[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; mwArray a(3, 3, mxDOUBLE_CLASS, mxREAL); a.SetData(data, 9); cout << a << endl << endl; //显然,mwArry类对<<是有运算符重载的 mwArray s(3, 3, mxDOUBLE_CLASS, mxREAL); mwArray v(3, 3, mxDOUBLE_CLASS, mxREAL); mwArray d(3, 3, mxDOUBLE_CLASS, mxREAL); mysvd(1, s, a); //调用自己用matlab写的函数,对a做奇异值分解 cout << s << endl << endl; cout << v << endl << endl; for (int i = 1; i < 4; i++) //逐个显示元素 { for (int j = 1; j < 4; j++) { cout << d.Get(i, j) << " "; } cout << endl; } cin.get(); return 0;}
然后点击菜单栏下的项目->属性,在项目属性对话框VC++选项中:
包含目录:C:\Program Files (x86)\MATLAB\R2014a\extern\include
库目录:C:\Program Files (x86)\MATLAB\R2014a\extern\lib\win32\microsoft
在链接器->输入选项中,附加依赖项:
libmat.liblibmex.libmclmcr.libmclmcrrt.lib
也可以把刚才库目录下的所有lib文件的名字输入进去。
配置好之后就可以点击visual studio上的运行按钮执行程序了,输出结果如下:
6 0
- matlab2014a + win764bit + vs2013混合编程(.m转成dll供C++调用)
- matlab2014a + win764bit + vs2013混合编程(.m转成dll供C++调用)
- MATLAB R2014a与VS2013混合编程(vs调用dll文件)
- VC++和Matlab混合编程(在VC中调用将.m文件生成的DLL)
- matalb7与VC2008混合编程DLL方法(一)m函数打包成C\C++DLL库
- Matlab2014b与C/C++(VS2013)混合编程(未完)
- Matlab2014b与C/C++(VS2013)混合编程
- c与matlab混合编程之dll调用
- 【混合编程实例】C/C++调用FORTRAN编写的DLL
- DLL文件 VC++&Matlab混合编程( 调用DLL)
- VS2013和matlab相互调用混合编程
- VC调用matlab dll方式混合编程(c风格--例2)<二>
- VC与Matlab混合编程(在VC中调用.m文件编译生成的DLL)
- c编写dll供c#调用
- C语言生成DLL供C#调用
- c#(vs2013)、 matlab(2014a)混合编程
- VC++调用Matlab编写的DLL(混合编程)
- VS2013调用*.m文件生成的动态链接库*.dll
- Oracle 12c 手工创建CDB数据库
- poj3083 dfs+bfs一次ac
- Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Wi
- AFNetWorking出现code=-1016错误解决办法
- 关于ant自动化打包
- matlab2014a + win764bit + vs2013混合编程(.m转成dll供C++调用)
- mysql 多实例案例实战
- 如何将Birt源码添加到Eclipse中
- PHP获取QQ音乐的API类,可以集成到各种音乐网站上使用
- springmvc配置详解2大集合转载
- mongoDB----Java的基本操作
- DATASET遍历方法
- 感悟:学习做人的道理
- L2 ingress 流程