matlab2014a + win764bit + vs2013混合编程(.m转成dll供C++调用)
在matlab中可以通过mbuild工具将.m文件编译成dll文件供外部的C++程序调用,这样就可以实现matlab和C++混合编程的目的。
1. 使用matlab生成dll文件
1.1 首先需要带有mcc编译器的matlab软件,这个可以通过在matlab命令行中输入:!mcc命令来查看
1.2然后再命令窗口输入mbuild -setup选中要使用的C++编译器,在这里我选择了VS2013的编译器。
1.3选好编译器后再命令窗口输入deploytool进入编译窗口,在弹出的窗口中选择第二项,即生成dll动态链接库的形式,之后会弹出如下窗口
在MATLAB Complie对话框中的左上角APPLICATION TYPE中选择C++ Shared Library类型,在旁边的白色框中点击加号将需要编译成dll的.m文件添加到当前项目中,
1.4之后就可以点击右上角的package按钮生成dll文件,点击之后matlab会弹出编译进行的对话框,此时只需要等待既可以了
等待一段时间之后就可以在指定的目录下看到生成dll以及相应的.h和.lib文件
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;
}
相关环境:
包含目录:C:\Program Files (x86)\MATLAB\R2014a\extern\include
库目录:C:\Program Files (x86)\MATLAB\R2014a\extern\lib\win32\microsoft
在链接器->输入选项中,附加依赖项:
libmat.lib
libmex.lib
mclmcr.lib
mclmcrrt.lib
结果:
出处:http://blog.csdn.net/sjhuangx/article/details/49305237
转载于:https://www.cnblogs.com/laohaozi/p/8266507.html
matlab2014a + win764bit + vs2013混合编程(.m转成dll供C++调用)相关推荐
- matlab将cpp编译为dll,Matlab函数编译成dll供Cpp调用的方法图解教程
曾经实现过将matlab函数编译成dll供Cpp调用,这篇文章的目的是对新增的面向对象的的扩展mwArray进行讲解,matlab很容易和C/C++联合起来使用. 以前做过matlab7与c++的混合 ...
- 【转】matlab函数编译成dll供Cpp调用的方法
转自:https://www.cnblogs.com/vincenzo/archive/2009/09/09/1563467.html 以前做过matlab7与c++的混合编程:将m函数编译成dll给 ...
- 用IKVMC将jar转成dll供c#调用
目录 前言 ikvmc介绍 ikvmc下载安装 下载并解压 设置环境变量 jar->dll 常用参数说明 具体操作 解决方案 前言 实习到现在所需要的工具类给的都是jar包,但是我需要在.net ...
- C# wpf 封装成dll供C++调用
本文根据http://download.csdn.net/detail/l250178301/5647347创建,并加上自己的一些实际情况· 首先,新建一个wpf项目 然后 把app.xaml和那个窗 ...
- matlab函数编译成库供C++调用(非常详细)
MATLAB具有着很高的计算性能,一些算法用MATLAB很容易实现,而用C++很难实现,如果想在C++中调用MATLAB编写的函数,可以将该函数编译成库文件,之后在C++中对其进行调用. 本文详细讲解 ...
- ikvm java转换成dll_利用IKVM.NET将Java jar包转换成可供C#调用的dll文件
C#可以直接引用C++的DLL和转换JAVA写好的程序.最近由于工作原因接触这方面比较多,根据实际需求,我们通过一个具体例子把一个JAVA方法转换成可以由C#直接调用的DLL C#调用c++ C#调用 ...
- C++代码封装成dll供C#中调用、调用dll无可用源
C#工程不可以直接调用C++的头文件和Lib库等 所以在程序中C#需要调用的现象,先将C++的东西封装成动态链接库,再调用 若调用dll时显示:无可用源调用,说明导入的DLL路径不对. 静态库和动态库 ...
- django调用java_07.手把手教将深度学习利用Django将模型发布成服务供java调用
标题 问题 一.python发布成服务 1.先建立一个深度学习模型并训练好 2.建立一个预测方法去调用训练好的模型 3.建立一个Django工程 4.将python利用模型预测的代码放入Django项 ...
- go语言 c# 混合编程 pdf,C# 结合 Golang 开发
1. 实现方式与语法形式 基本方式:将 Go 程序编译成 DLL 供 C# 调用. 1.1 Go代码 注意:代码中 export 的注释是定义的入口描述不能省略 package main import ...
最新文章
- ios cpu指令架构
- 手机发电脑邮箱未开启服务器,手机邮箱无法发送和接收邮件时发生了什么
- 潭州课堂25班:Ph201805201 爬虫基础 第六课 选择器 (课堂笔记)
- 使用Eclipse调试Android程序时无法安装控制台报错INSTALL_FAILED_UPDATE_INCOMPATIBLE
- MongoDB和Compass安装教程
- pdf怎么压缩的小一点?
- 北大青鸟 当当网网 js 上机作业
- 年度盘点 | 安全测试者偏爱的安全测试工具
- Mac系统查看端口占用的进程
- Android开发-视图view讲解
- 50欧姆线设计 高频pcb_pcb 50欧姆阻抗匹配设计技巧
- 抢红包 作者 陈越单位 浙江大学
- 更改app图标和名称
- adb remount失败的一种解决办法
- 希腊罗马神话和《圣经》中的英语典故
- 准备你的应用(Android免安装应用)
- linux下创建指定大小的空文件
- 阅读 v3.20.031215 免费开源网络文学阅读器
- mysql更新下载文件在哪儿_Windows自动更新所下载的文件存在什么地方
- zookeeper的集群内部选举leader
热门文章
- 更改git bash默认的路径
- 【spring boot2】第8篇:spring boot 中的 servlet 容器及如何使用war包部署
- MyBatis的扩展点(plugins)
- 从头编写 asp.net core 2.0 web api 基础框架 (5) EF CRUD
- 第五章ThinkingInJava
- Oracle 11g 数据类型
- IE6 下div高度显示的问题
- ADO.NET的连接模式
- 终端软件升级功能开发_5个很棒的终端技巧可帮助您升级为开发人员
- 编写文档_如何通过编写优质文档来使自己的未来快乐