由于在下才疏学浅,在网上看各高手指南时亦觉云里雾里,遂决定一切说明从最基础说起,一是方便自己(记性奇差),二是方便似我的小白。以下部分是我从各网站论坛等摘抄、重组、改写过的,以求更加详实明朗,由于参考较多,便不一

一列举,相信在baidu前三页各位能够找到我所引用的内容。在这里,向前辈们致敬!

闲话少序。

首先,说最简单环境,我的是matlab2012a,vs2010。

其次,创建C++函数:若想将matlab中部分函数C++化,先在vs中新建一个cpp文件(注意,不是新建项目,否则#include

不对)。这个文件(我们管它叫mex文件)的名字就是将来在matlab中调用函数的名字,所以别随便起。这个文件是有一定格式的:

*一个C/C++的MEX源程序通常包括4个组成部分,其中前3个是必须包含的内容,第4个则根据所实现的功能灵活选用

*(1) #include “mex.h”;

*(2)MEX文件的入口函数mexFunction, MEX文件导出名必须为mexFunction函数;

*(3)mxArray;

*(4)API函数

这里,举个最简单的样例:

#include

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray

*prhs[])

{ mexPrintf("hello,world!/n");

}

以上,就是一个最简单的mex文件。关于mexFunction,可以认定是一个接口函数,有一定的规则:

nlhs:输出参数数目

plhs:指向输出参数的指针数组

nrhs:输入参数数目

prhs: 指向输入参数的指针数组

同样举个例子:

在matlab Command

Window(命令窗口)中调用时(当然是编译后,下一步讲),如:[a,b]=test(c,d,e),*prhs[0]=c

*prhs[1]=d

*prhs[2]=e,当函数返回时,将会把你放在plhs[0],plhs[1]里的地址赋给a和b,达到返回数据的目的。比如mex文件helloworld:

#include "mex.h"

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray

*prhs[])

{

int i;

i=mxGetScalar(prhs[0]);

if(i==1)

mexPrintf("hello,world!\n");

else

mexPrintf("大家好!/n");

}

当在matlab写:helloworld(1)时,打印出“hello,world”;否则打印出“大家好!”

接着,在matlab中编译:首先在命令窗口(格式稍加改动,不影响参照):

>>mex -setup 有:

Welcome to mex -setup. This utility will help you set up

a default compiler. For a list of supported compilers, see

http://www.mathworks.com/support/compilers/R2012a/win32.html

Please choose your compiler for building MEX-files:

Would you like mex to locate installed compilers [y]/n?

输入:y 有:

Select a compiler:

[1] Lcc-win32 C 2.4.1 in E:\MATLAB~1\sys\lcc

[2] Microsoft Visual C++ 2010 in D:\vs2010

[0] None

Compiler:

输入:2 有:

Please verify your choices:

Compiler: Microsoft Visual C++ 2010

Location: D:\vs2010

Are these correct [y]/n?

输入:y 就行了。然后会出一堆别的东西,不用理它。

然后,敲下:

>>cd

D:\matlab试验田\matlab调C++\hello2 其中,cd后的一串是刚才mex文件所在的文件夹,即路径。

接着,敲下:

>>mex helloworld2.cpp

其中,mex后面就是mex文件的文件名,也就是C++函数,之后会生成helloworld2.mexw32(64位的会生成

.mexw64)文件,在matlab当前文件夹(Current

Folder中会有显示,相应的,在mex文件所在文件夹中也有体现)。

最后,在matlab中调用C++函数:像matlab中调用普通函数即可。比如第二步中:

>>[a,b]=test(c,d,e)

(test就是C++函数,用就行了),比如:

>>helloworld2 就会直接显示:hello

world!

至此,最简单的matlab调用C++函数告一段落。

c++引用matlab类,matlab调用C++函数浅谈(一)相关推荐

  1. python init函数可以外部调用么,如何从python类中调用外部函数

    我试图收集通过套接字解析的数据.这是我的密码:import pickle import SocketServer class SocketReciever(SocketServer.BaseReque ...

  2. python 类函数调用外部函数_python类中调用外部函数,python 函数中 定义类

    Q1:python函数里的数组如何在函数外调用出来 使用返回值的方法有两种: 可以直接把调用的函数作为变量使用 可以用调用函数给一个变量赋值 第一种情况见如下例子: l = [1,2,3,4,5] d ...

  3. matlab泊松分布随机数和图像_浅谈可靠性理论中的常用概率分布

    浅谈可靠性理论中的常用概率分布 1. 泊松分布 基本原理 泊松分布是最常见的离散概率分布,适合描述单位时间内随机事件发生的概率. (1) 泊松分布概率密度(不可靠度)计算公式 MATLAB概率密度函数 ...

  4. Javascript变量函数浅谈

    一.变量 在javascript变量中可以存放两种类型的值:原始值和引用值. 原始值存储在栈上的简单字段,也就是值直接存储在变量所标示的位置内. 引用值存储在堆内的对象,栈内变量保存的是指向堆内对象的 ...

  5. python类构造方法缺省_浅谈python3 构造函数和析构函数

    要点: 1.魔法方法,被__双下划线所包围 在适当的时候自动被调用 2.在创建一个对象的时候,一定会调用构造函数 3. del析构函数,在del a对象的时候,并一定会调用该析构函数 只有当该对象的引 ...

  6. Linux系统常用函数,浅谈linux下的一些常用函数的总结(必看篇)

    1.exit()函数 exit(int n)  其实就是直接退出程序, 因为默认的标准程序入口为int main(int argc, char** argv),返回值是int型的. 一般在shell下 ...

  7. java什么是适配器类?作用是什么?_浅谈Java适配器模式

    假期刚结束不久,也没什么好写的,今天就水下文章,讲讲设计模式对开发时的影响,做开发到现在,感觉设计模式对开发的影响还是挺大的. 这次就简单谈谈适配器模式.可能适配器模式感觉比较鸡肋,但是用到的地方还挺 ...

  8. python 调用 .netcore api_浅谈Python调用XBee的API来进行通讯

    浅谈Python调用XBee的API来进行通讯 用python编程来控制串口(COM口),来让一对XBee进行通讯.不需要借助终端来发送和接收数据,增大了XBee使用的灵活性.这才是使用XBee模块的 ...

  9. java基类能调用虚函数_如果我要重写基类的虚函数,可以调用它吗?

    MYYA 是,class Bar : public Foo{    ...    void printStuff()    {        Foo::printStuff();    }};它与su ...

最新文章

  1. c语言logout_C++ 格式化日志输出实现代码
  2. 北京大学深圳研究生院计算机学什么,2018年北京大学深圳研究生院408计算机学科专业基础综合之计算机操作系统考研核心题库...
  3. X264 输出的统计值的含义(X264 Stats Output)
  4. linux内核sysfs详解【转】
  5. 2020年美赛C题(数据分析题)O奖论文笔记 (1)
  6. 深度学习笔记其一:基础知识和PYTORCH
  7. FLASH和EEPROM的最大区别
  8. leapftp连接不上,为什么leapftp连接不上
  9. python-decouple简介
  10. visio2003中、origin中、matlab中,字体的大小以pt为单位,与word中的几号字大小是如何对应?
  11. 电大计算机绘图本任务检测,(更新版)国家开放大学电大《计算机绘图》网考形考作业试题及答案-20210724215340.pdf-原创力文档...
  12. 人社部通知!2020年社保基数大调整、公积金必须同时缴纳、医保账户取消…
  13. startwith的使用方法
  14. 淘宝新店被人举报盗图要扣分处理办法
  15. Docker 容器技术(史上最强总结)
  16. 指数增强策略(股票)
  17. 2015_BOE_Chiu2 杜克大学oct数据集
  18. 命令反查dns,命令ip地址dns反查
  19. nrf51822蓝牙学习笔记一
  20. 智能手机屏幕常用单位浅析

热门文章

  1. OpenCV中的透视变换介绍
  2. 链表问题12——将单链表的每K个节点之间逆序(方法二)
  3. 下载、安装、配置 java jdk1.8
  4. SpringMVC基础及应用-李守红
  5. 【Interfacenavigation】通知概述(36)
  6. shell任务不受意外中断影响的常见方法
  7. Yii2 使用 Joins 查询
  8. C#版本的CPU性能测试
  9. WebClient.UploadValues Post中文乱码的解决方法
  10. java生成tif图片的缩略图,将多页tif文件转换为图像文件,并生成缩略图