在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++调用)相关推荐

  1. matlab将cpp编译为dll,Matlab函数编译成dll供Cpp调用的方法图解教程

    曾经实现过将matlab函数编译成dll供Cpp调用,这篇文章的目的是对新增的面向对象的的扩展mwArray进行讲解,matlab很容易和C/C++联合起来使用. 以前做过matlab7与c++的混合 ...

  2. 【转】matlab函数编译成dll供Cpp调用的方法

    转自:https://www.cnblogs.com/vincenzo/archive/2009/09/09/1563467.html 以前做过matlab7与c++的混合编程:将m函数编译成dll给 ...

  3. 用IKVMC将jar转成dll供c#调用

    目录 前言 ikvmc介绍 ikvmc下载安装 下载并解压 设置环境变量 jar->dll 常用参数说明 具体操作 解决方案 前言 实习到现在所需要的工具类给的都是jar包,但是我需要在.net ...

  4. C# wpf 封装成dll供C++调用

    本文根据http://download.csdn.net/detail/l250178301/5647347创建,并加上自己的一些实际情况· 首先,新建一个wpf项目 然后 把app.xaml和那个窗 ...

  5. matlab函数编译成库供C++调用(非常详细)

    MATLAB具有着很高的计算性能,一些算法用MATLAB很容易实现,而用C++很难实现,如果想在C++中调用MATLAB编写的函数,可以将该函数编译成库文件,之后在C++中对其进行调用. 本文详细讲解 ...

  6. ikvm java转换成dll_利用IKVM.NET将Java jar包转换成可供C#调用的dll文件

    C#可以直接引用C++的DLL和转换JAVA写好的程序.最近由于工作原因接触这方面比较多,根据实际需求,我们通过一个具体例子把一个JAVA方法转换成可以由C#直接调用的DLL C#调用c++ C#调用 ...

  7. C++代码封装成dll供C#中调用、调用dll无可用源

    C#工程不可以直接调用C++的头文件和Lib库等 所以在程序中C#需要调用的现象,先将C++的东西封装成动态链接库,再调用 若调用dll时显示:无可用源调用,说明导入的DLL路径不对. 静态库和动态库 ...

  8. django调用java_07.手把手教将深度学习利用Django将模型发布成服务供java调用

    标题 问题 一.python发布成服务 1.先建立一个深度学习模型并训练好 2.建立一个预测方法去调用训练好的模型 3.建立一个Django工程 4.将python利用模型预测的代码放入Django项 ...

  9. go语言 c# 混合编程 pdf,C# 结合 Golang 开发

    1. 实现方式与语法形式 基本方式:将 Go 程序编译成 DLL 供 C# 调用. 1.1 Go代码 注意:代码中 export 的注释是定义的入口描述不能省略 package main import ...

最新文章

  1. ios cpu指令架构
  2. 手机发电脑邮箱未开启服务器,手机邮箱无法发送和接收邮件时发生了什么
  3. 潭州课堂25班:Ph201805201 爬虫基础 第六课 选择器 (课堂笔记)
  4. 使用Eclipse调试Android程序时无法安装控制台报错INSTALL_FAILED_UPDATE_INCOMPATIBLE
  5. MongoDB和Compass安装教程
  6. pdf怎么压缩的小一点?
  7. 北大青鸟 当当网网 js 上机作业
  8. 年度盘点 | 安全测试者偏爱的安全测试工具
  9. Mac系统查看端口占用的进程
  10. Android开发-视图view讲解
  11. 50欧姆线设计 高频pcb_pcb 50欧姆阻抗匹配设计技巧
  12. 抢红包 作者 陈越单位 浙江大学
  13. 更改app图标和名称
  14. adb remount失败的一种解决办法
  15. 希腊罗马神话和《圣经》中的英语典故
  16. 准备你的应用(Android免安装应用)
  17. linux下创建指定大小的空文件
  18. 阅读 v3.20.031215 免费开源网络文学阅读器
  19. mysql更新下载文件在哪儿_Windows自动更新所下载的文件存在什么地方
  20. zookeeper的集群内部选举leader

热门文章

  1. 更改git bash默认的路径
  2. 【spring boot2】第8篇:spring boot 中的 servlet 容器及如何使用war包部署
  3. MyBatis的扩展点(plugins)
  4. 从头编写 asp.net core 2.0 web api 基础框架 (5) EF CRUD
  5. 第五章ThinkingInJava
  6. Oracle 11g 数据类型
  7. IE6 下div高度显示的问题
  8. ADO.NET的连接模式
  9. 终端软件升级功能开发_5个很棒的终端技巧可帮助您升级为开发人员
  10. 编写文档_如何通过编写优质文档来使自己的未来快乐