2018-12-08 回答

基于dll形式vc调用matlab函数方法

如果在一matlab中或vc中写好了函数的话,想在对方的环境中使用,直接将对方语言的函数编译成dll是一个很方便的方法,不需要重写了。今天把基于dll形式vc调用matlab函数的主要过程写下,在后续将写一下matlab调用vc函数的方法。

1,matlab中编译dll

在matlab中写好函数,保存在mttestfun.m中,使用mcc -w cpplib:mtlibtestfun -t link:lib mttestfun.m生成dll,用这个命令生成的是c++形式的,即matlab数据类型可以用类;否则用其他的命令生成的c形式的,不能用类。并生成了相应的其他mtlibtestfun.h,mtlibtestfun.lib和mtlibtestfun.dll在内的一些文件

2,vc中引用matlab环境

需要引用的.h文件路径为matlab安装目录的extern\include,需要引用的.lib文件路径为matlab安装目录的extern\lib\win32\microsoft;引入附加库mclmcrrt.lib

3,vc中调用matlab函数

将刚才matlab编译生成的文件全拷到当前vc工程下,只将mtlibtestfun.h文件加入到当前工程,并在需要调用的文件中包含;引入附加库mtlibtestfun.lib。在vc初始化函数里用下面函数进行初始化

mclinitializeapplication(null,0);

mtlibtestfuninitialize();

在结束时用下面函数释放

mtlibtestfunterminate();

mclterminateapplication();

下面在需要的地方调用,假设是下面的形式

mtlibtestfun(int nargout, mwarray& y, const mwarray& i, const mwarray& th);

nargout是返回参数个数,这里是1,后面y反演向量则是传出参数,i和th则是传入参数辐射值和切高。

c++数据传入matlab函数时需要将其转化成mwarray类型

double* pi = new double[row*column];

pl = ...

mwarray mwi(row, column, mxdouble_class);

mwi.setdata(pi, row*column);

返回后还需要将mwarray转回c++类型数据

double* py = new double[yrow*ycolumn];

mwy.getdata(py, yrow*ycolumn);

当然,对于一维数组数据来说,这样调用是没有问题的,但是对于二维矩阵数据来说,上面的调用会发生数据传入和传出错误。因为c++与matlab数组存储顺序不一样,matlab是列优先与c++中的行优先不同。这个数据的转换也将在后续给出一些解决办法。

matlab dll没有头文件,matlab调用dll没有头文件怎么办相关推荐

  1. Python编程语言学习:在根目录的py文件内调用某叶目录文件内的包/库或者函数(常用在GUI编程)之详细攻略

    Python编程语言学习:在根目录的py文件内调用某叶目录文件内的包/库或者函数(常用在GUI编程)之详细攻略 目录

  2. cmd执行bat结果不回显_cmd - 如何在bat文件中调用另一个bat文件

    情景一:两个bat文件在同一个目录下 有时候我们需要在一个bat文件中调用另一个bat文件,比如我们想在a.bat中调用b.bat,如下. a.bat @echo off echo I am a.ba ...

  3. cmd 如何在bat文件中调用另一个bat文件

    微信搜索:"二十同学" 公众号,欢迎关注一条不一样的成长之路 情景一:两个bat文件在同一个目录下 有时候我们需要在一个bat文件中调用另一个bat文件,比如我们想在a.bat中调 ...

  4. python 在一个py文件中调用另一个py文件中的变量以及一个有趣的问题

    python 在一个py文件中调用另一个py文件中的变量以及一个有趣的问题 1.在一个py文件中调用另一个py文件中的变量 新建一个py文件,记为t1.py # t1.py m = 2 n = 1 a ...

  5. C#.NET如何将cs文件编译成dll文件 exe文件 如何调用dll文件

    比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装 ...

  6. java jni dll路径_Java中Jni调用DLL文件试验

    Java中Jni调用DLL文件试验 下面是小编整理的Java中Jni调用DLL文件试验内容,希望可以为您带来帮助!更多内容请关注应届毕业生考试网! 所有文件均在E:\路径下. 安装jdk1.6.0_0 ...

  7. python调用dll函数_从Python调用DLL函数

    我想从Python调用DLL中的函数.但我有个错误:"Attribute Error function not found" 这是我的代码:import os import cty ...

  8. 如何在一个.c文件里调用另一个.c文件里的变量

    假设被调用的C文件为func.c,则被调用的全局变量需被定义在文件开始处,即与头文件.宏定义. 函数声明在一起 #include <stdio.h> #define KEY abcd in ...

  9. 模板文件如何调用php函数,模板文件调用方法与路径

    :-: **模板调用方法** * * * * * 如何通过微擎进入商城模块: 1,路由规则: 当传入的URL请求中包含一个名为 c.a.do(可选) 的 GET 参数,它即被视为一个路由,例如: ht ...

  10. python解压7z文件_Python调用7zip命令实现文件批量解压

    Python调用7zip命令实现文件批量解压 1.输入压缩文件所在的路径 2.可以在代码中修改解压到的文件路径和所需要解压的类型,列入,解压文件夹下面所有的mp4格式的文件 3.cmd 指的就是Pyt ...

最新文章

  1. 如何解决工业缺陷检测小样本问题?
  2. 他让张一鸣登门请教,培养出戴文渊李沐陈天奇,创建了传说中的上海交大ACM班...
  3. JDBC连接mysql、创建表、操作数据、PreparedStatement防注入、sql语句返回值类型知识汇总
  4. Boost:prefer的使用测试程序
  5. 【Linux】一步一步学Linux——traceroute命令(167)
  6. 邓公数据结构C++语言版学习笔记——二叉树
  7. 使用 stm32实现锂电充电_千次循环使用,ZMI可充电锂电池套装,够用一辈子吗?...
  8. 紫色精品Bootstrap4 后台UI模板
  9. 基于JAVA+Swing+MYSQL的超市管理系统
  10. oracle vm win10,win10系统oraclevm卸载不了错误2503的解决方法
  11. [转]php连接postgresql
  12. mysql语句解析_MYSQL中SQL执行分析
  13. python 员工考勤_python-01实现考勤表添加与删除
  14. unity 实现PPT动画效果切换图片
  15. AngularJS页面【uib-dropdown】控件在模态窗口(弹出窗)中无法使用问题
  16. MongoDB 极简入门实践
  17. 重学java——倒叙遍历
  18. Mysql 错误 1273 Unknown collation
  19. IoC容器Autofac
  20. win10计算机管理器在哪,Win10设备管理器在哪里?Win10系统设备管理器打开方法图解...

热门文章

  1. css动画与js动画的区别
  2. 采用我国国产处理器的超级计算机是,“中国芯”超级电脑合肥诞生 首次采用国产CPU芯片...
  3. matlab二维谐振子,基于有限差分法求解的二维谐振子的MATLAB程序如下。哪位大神能帮我做个注明啊,完全看不懂啊,,急...
  4. linux 搜狗输入法包名,搜狗输入法(com.sohu.inputmethod.sogou) - 10.27 - 应用 - 酷安
  5. python实现knn算法鸢尾花_Python学习之knn实现鸢尾花分类
  6. 【Python】pyCryptodome模块实现AES加密、解密
  7. react-json渲染
  8. Linux系统性能查询命令
  9. [转]Angular2 使用管道Pipe以及自定义管道格式数据
  10. [转]Nginx的负载均衡方式