精华内容
下载资源
问答
  • 2019-06-19 13:32:25

    我在网上找了很多资料,都没有人仔细的说明初始化失败后该怎么解决。

    我的VS版本是2013,MATLAB版本是2017。

    比如说我需要调用的dll文件是:MAR.dll。

    很多人都知道要把MAR.dll、MAR.h、MAR.lib放到自己的工程目录下的相应位置。

    还有一个必不可少的文件是MAR.ctf,把它放在MAR.dll的同级目录下就可以了。

    更多相关内容
  • matlab的函数制作dll的步骤,C++调用dll的demo程序,mwArray的应用案例,以及VS调用matlab的dll环境配置过程。
  • VS调用Matlab的函数.docx

    2019-07-19 17:21:02
    将Matlab的.m文件生成动态链接库,然后在VS的工程项目中调用动态链接库。可以完美实现VC调用Matlab函数。
  • VS调用MATLAB缺少dll文件问题

    热门讨论 2014-04-15 17:42:22
    解决VS2008调用MATLAB时提示缺少DLL文件而不能启动程序问题,主要包括的DLL文件有:comcli.dll,DataSvcs.dll,icudt24l.dll,icuin24.dll,icuio24.dll,libmwhardcopy.dll,libmwservices.dll,libmx.dll,libut....
  • VS2010调用MATLAB2012的动态链接库,测试通过,有操作步骤和测试代码
  • vs调用Matlab

    2013-03-11 19:22:18
    vs调用Matlab
  • vs2015中调用matlab中自定义的函数。c++和matlab的混合编程简单实例
  • matlab调用VS2015生成的.dll工程;里面包含了VS2015的工程文件,以及matlab脚本文件
  • VS2015调用Matlab2015b生成32位动态链接库,包括说明文档及VS2015工程和Matlab源码示例。
  • VS调用matlab

    千次阅读 2015-07-01 22:00:24
    可参照: VS2010调用Matlab的m文件所生产的dll实现二次规划算法.docx 全文-毕业论文-文档在线 http://max.book118.com/html/2013/1231/5422885.shtm VS调用matlab_HuoChengfu_新浪博客 ...

    可参照:

    VS2010调用Matlab的m文件所生产的dll实现二次规划算法.docx 全文-毕业论文-文档在线

    http://max.book118.com/html/2013/1231/5422885.shtm


    VS调用matlab_HuoChengfu_新浪博客
    http://blog.sina.com.cn/s/blog_4d1865f00100r4ad.html

    VS调用matlab的一些设置

    MyFunction.m :
    function MyFunction(x,y)
       z = extra1(y);

       figure(1)
       plot(x,z);
       grid
       print(1,'-dpng','D:\abc.png');//保存图片
       end


    extra1.m :
    function z=extra1(y)
     
       for i=1:20
          z(i) = y(i);
       end

       for i=21:30
           z(i)=3*y(i);
       end
    说明:Matlab里MyFunction(x,y)调用z=extra1(y)
          希望在C++中调用MyFunction(x,y)

    1、配置环境,见前面博客文章
    2、Matlab:mcc -C -W cpplib:filename -T link:lib MyFunction.m
       注:filename可任意取名
           只需编译MyFunction.m即可,编译器会自动寻找其调用的函数,不需管extra1.m
    3、“2”会生成filename.h(.lib .dll .ctf),只需要这4个,.cpp和其它用不着
    4、将上述四个文件copy到VC工程中
    5、project添加filename.lib,解决方案中添加filename.h
    6、C函数: filenameInitialize();//必须(filename与前面一致)
                int Num = 30;
                mwArray x(1,Num,mxDOUBLE_CLASS);
                mwArray y(1, Num, mxDOUBLE_CLASS);
              for(int i = 1; i <= Num; i++)
              {
          x(1, i) = i;
         y(1, i) = 2 * i;
              }
                MyFunction(x, y);//调用函数,参数x,y必须为矩阵mwArray格式,其余不接收
              filenameTerminate();//非必须,可写在析构函数,这样matlab图不会立即消失

    ----------------------------------------------------------------------------------------------

    注:filename.m与function funcname(),最好filename = funcname

    1、Matlab生成dll,lib等(可被C++调用)
    mcc -C -W cpplib:filename -T link:lib function.m

    2、VC++调用Matlab生成的dll见
       “VS2008调用Matlab2010生成的dll流程.txt”

     

    3、Matlab生成exe
     mcc -m filename

    4、VC++调用exe:
      #include <shellapi.h>
      system("D:\\filename.exe");  //路径及exe名字可改
      如何在exe中使参数可调? 待续。。。


    展开全文
  • VS调用Matlab计算引擎

    千次阅读 2016-04-27 13:22:41
    C++&Matlab混合编程

    C++调用Matlab(混合编程)

    实验环境:

    VS2015+Matlab2015b+Windows10
    (本实验在多个平台上均通过验证)
    也可以用cmake编译调用Matlab,核心就是让C++编译器找到Matlab的engine以及对应的库和Dll

    步骤:

    1. 新建工程

    2. 配置属性


    这里一共要改三个地方:
    1. 配置属性->VC++目录->包含目录
    编辑为:Matlab安装路径下 ...\extern\include;
    <
    展开全文
  • VS通过调用matlab引擎方式在VS调用matlab函数和自己写的.m文件 1.matlab编译成.dll给VS调用 2. VS通过调用matlab引擎的方式 2.1调用matlab自带函数 2.2 碰到的问题 2.3 调自己写的matlab函数 首先说vs和matlab...


    首先说vs和matlab混合编程网上有三种方法,分别是:

    1.matlab编译成.dll给VS调用

    这个可以脱离matlab,只需要把相关的文件拷入VS工程目录下,具体流程在下面粘贴几个链接,感觉写的挺好的。

    1.matlab函数编译成库供C++调用(非常详细)
    2.C/C++程序通过动态链接库调用MATLAB程序

    但是好像不是所有的matlab程序都适用于这种方式,啊好烦啊 (≧﹏ ≦),最最最坑的是,在matlab里涉及到符号变量 syms ,编译完的.dl文件在vs里跑会提示无法识别的符号或函数,然后指向matlab文件用 syms 定义符号变量的那一行(这倒是很智能),现在也没有找到解决办法,网上有说是:编译成 .dll不能用 syms sym 这些,还有什么替换啥的,感觉太麻烦没有试,试下面那个脱离不了matlab的有点笨笨的方法吧, ( ̄_ ̄|||)

    2. VS通过调用matlab引擎的方式

    参考了下面几个链接,在这里留下:

    1.在VS2008中调用Matlab的m文件(百度文库)
    2.和上面一样(CSDN)

    就是说,引擎的方式提供的matlab功能是最全面的,比如说上面那个"臭syms",用引擎的方式后来可以用。通过引擎的方式实际上是在程序中打开一个matlab进程,让matlab软件自己去运行自己的.m文件里的程序,这个当matlab文件需要修改的时候也比.dll方便,直接修改.m文件就行。在控制台还能看到matlab图标,是将matlab通过ActiveX 控件方式启动的。

    环境 :: 这个值得一说,就是VS和matlab的版本和位数,我用了两个分别是

    【VS2013(x64编译)+MATLAB2014a(64位)】 【VS2013(win32编译)+MATLAB2015b(32位)】

    版本的话个人感觉MATLAB比VS高应该就差不多,或者matlab官网查一下支持。

    VS2013一直是那个2013,好像它是32位的,然后在编译的时候可以选择编译活动平台是win32 还是x64,然后分别对应32位和64位的matlab,所以就是因为本来我的VS程序有些dll库是32位编译的,所以它编译的时候只能选择win32编译,不能选择x64,而想调用64位的matlab引擎编译方式必须选择x64编译,所以电脑上本来安装的64位版本matlab2014a不行,当时是新建一个控制台应用程序选择x64编译试了下可以调用引擎,然后再安装了32位的matlab(MATLAB2015是最后一个支持32位的matlab版本了)

    下面说说流程:(用后一个环境吧,可以边做边记录,前一个已经好了)

    1. 安装了VS2013和matlab2015b(32位)(超级推荐软件安装管家公众号,这个神仙公众号!!!)
      在这里插入图片描述

    2. 配置编译器(包含引擎头文件engine.h并引入Matlab对应的库文件libmx.lib、libmat.lib、libeng.lib)

    • VS里新建一个控制台应用程序
    • 右键项目-属性-VC++目录-包含目录 :D:\MATLAB2015\R2015b\extern\include
    • 右键项目-属性-VC++目录-库目录 :D:\MATLAB2015\R2015b\extern\lib\win32\microsoft
    • 右键项目-属性-连接器-输入:在附加依赖项编辑框中,添加文件名libmx.lib libmat.lib libeng.lib
    • #include "enging.h" 该文件包含了引擎API函数的说明和所需数据结构的定义。
    • 测试程序:

    2.1调用matlab自带函数

    #include "stdafx.h"
    
    #include <iostream>
    #include "math.h"
    #include "engine.h"
    
    #pragma comment(lib,"libmx.lib")
    #pragma comment(lib,"libmat.lib")
    #pragma comment(lib,"libeng.lib")
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    
    	const int N = 50;
    	double x[N], y[N];
    	int j = 1;
    	for ( int i = 0; i < N; i++)
    	{
    		x[i] = i + 1;
    		y[i] = sin(x[i] + j*log(x[i]));
    		j *= -1;
    	}
    
    	Engine *ep;  //定义matlab引擎指针
    	if (!(ep = engOpen(NULL)))  //打开引擎 测试是否启动引擎成功
    	{
    		std::cout << "Can't start Matlab enfine!" << std::endl;
    		//exit(1);
    	}
    
    	//定义mxArray类型的1行N列的实数数组
    	mxArray *xx = mxCreateDoubleMatrix(1, N, mxREAL);
    	mxArray *yy = mxCreateDoubleMatrix(1, N, mxREAL);
    	//将数组x复制到mxArray数组xx中,将数组y复制到mxArray数组yy中
    	memcpy(mxGetPr(xx), x, N*sizeof(double));
    	memcpy(mxGetPr(yy), y, N*sizeof(double));
    	//将mxArray数组xx写入matlab工作空间,命名为xx
    	//将mxArray数组yy写入matlab工作空间,命名为yy
    	engPutVariable(ep, "xx", xx);
    	engPutVariable(ep, "yy", yy);
    
    	//engEvalString(ep, "plot(xx,yy);"); //像matlab发送画图命令
    
    	//engEvalString(ep, "benchmarkRRT()");
    
    	engEvalString(ep, "Control1()");
    	
    	mxDestroyArray(xx);
    	mxDestroyArray(yy);
    
    	std::cout << "press any key to exit" << std::endl;
    	std::cin.get();
    
    	engClose(ep); //关闭引擎
    
    	return 0;
    }
    

    2.2 碰到的问题

    虽然上面的步骤完成了,但是在程序运行的时候会碰到一些问题,

    • 引擎打开不成功,每次运行一闪而过,加断点发现每次都是引擎打不开直接退出了,这个是在 第一个环境下(VS2013(win32编译)+MATLAB2014a(64位) 出现的问题(解决了,没留下图…),可能是我那个matlab重装系统之后没有注册,按网上的方法VS与MATLAB混合编程出现打不开引擎的问题把matlab注册一下就好了。
      方法:先用管理员身份打开cmd,输入指令 cd/d D:\MATLAB\R2014a\bin 到matlab文件夹下面,再输入指令 matlab /regserver (这里千万注意指令中间有个空格空格空格,额,,,没有输入空格只是运行出了matlab而已)会弹出那个框。然后在程序里就能运行过打开引擎那一步了。
      在这里插入图片描述

    • 如果安装了两个matlab软件,调用引擎的时候,默认打开的是最新注册的版本的matlab软件,这个为啥,还不知道。。。

    • 提示缺失一些.dll文件,这些文件是在 D:\MATLAB2015\R2015b\bin\win32 文件夹下面的,当然可以挨个找到然后都复制到工程的 Debug 文件下,但是不止图片上的一个哦,需要超级超级多的 .dll,一个一个找或者把那里的全部.dll都粘贴过来也太尴尬了吧,强迫症会受不了的,别想了,没门没门~
      在这里插入图片描述
      需要理解一下项目寻找dll文件的流程,主要就是会在当前文件夹下搜,然后在系统的环境变量文件里搜,所以需要把那个文件夹路径添加到系统的环境变量里面,这样得劲儿多了(Debug里不会那么乱)~~,值得注意的是:改完直接运行还是会提醒找不到,关闭解决方案再打开还是一样,把VS软件关了,再打开就好了,不容易额。
      在这里插入图片描述
      在这里插入图片描述
      也就是这个链接说的这样 : VS2008调用matlab引擎找不到dll问题

    然后对于利用引擎调用matlab自带函数实现matlab函数功能就实现了,就是下图,那么怎么实现自己写的函数呢?
    在这里插入图片描述

    2.3 调自己写的matlab函数

    下面是对于自己用matlab写的函数。我自己瞎想的烂七八糟的,能用,就是太 LOW 了,目前先这么凑活着吧。
    观察一下,matlab里的polt函数有个.m文件,是在 D:\MATLAB2015\R2015b\toolbox文件夹里面,所以呢步骤:

    • 在上述路径toolbox文件夹里里添加自己写的函数的m文件(mycontrol文件夹)
    • matlab软件主页>设置路径>添加文件夹>写有自己matlab函数的文件夹,保存后重启matlab
      在这里插入图片描述
    	//engEvalString(ep, "plot(xx,yy);"); //像matlab发送画图命令
    
    	engEvalString(ep, "benchmarkRRT()");
    
    	engEvalString(ep, "Control1()");
    

    下面一个链接备用:

    VS2013调用MATLAB 2014计算引擎

    • 例0:小试牛刀,在C++中调用MATLAB绘图
    • 例1:使用engPutVariable函数向MATLAB引擎发送数据
    • 例2:使用engGetVariable函数从MATLAB引擎中获取数据:
    • 例3:向MATLAB引擎传入数据,然后从MATLAB引擎中获取3数据的计算结果:
    展开全文
  • LabVIEW调用MATLAB进行图像处理
  • 这里就总结一下如何在VS工程中调用MATLAB函数,以及遇到的问题如何解决的方法。 VS配置 这一步很重要,类似于其他C++库的配置,如:添加包含目录和库路径。 添加库目录(自己的MATLAB安装路径中查找):D:\...
  • qt调用matlab动态链接库
  • 之前已经跟大家介绍了在ubuntu系统下C++调用matlab程序的方法,需要的朋友们可以参考这篇文章,本文将给大家介绍关于windows下C++调用matlab程序的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看...
  • C/C++ VS调用matlab函数的方法

    万次阅读 多人点赞 2017-07-01 16:20:01
    C/C++ VS调用matlab函数的方法 Matlab在数值等矩阵运算中具有很大优势,并且Matlab提供了强大的工具箱可以使用,在C/C++开发中,我们可以在VS下调用matlab函数进行混合编程。下面主要介绍VS调用matlab函数的环境...
  • FORTRAN程序调用MATLAB引擎实现计算可视化介绍
  • VS2010调用MATLAB.zip

    2019-06-27 16:55:55
    Visual Studio 2010调用MATLAB算法混合编程,包括Visual Studio 2010示例工程、MATLAB示例代码以及文档说明。 MATLAB2017a
  • VS与Matlab混合编程——调用matlab.dll实现

    千次阅读 热门讨论 2018-08-08 16:29:45
    本人使用的VS2010和Matlab2014a 1.在Matlab中写一个简单的加法函数,例如 function c = add(a,b) c = a + b; end 保存为add.m文件。 在命令窗口输入 mex -setup命令,...
  • 1.VS2017调用Matlab函数

    千次阅读 2020-08-13 12:33:33
    VS2017调用Matlab函数环境配置 环境配置 1.在vs中新建项目-》右键-》属性,在包含目录添加如下内容(自己的Matlab安装路径) :
  • MATLAB调用refprop,里面包含四个除dll外所需要的文件
  • 详细介绍labview调用matlab函数的方法,以及过程中的注意事项。 详细介绍labview调用matlab函数的方法,以及过程中的注意事项。
  • vsmatlab混合编程之dll调用步骤
  • 项目信号处理和提取部分用到了matlab,需要应用到工程中方便研究。用具有万能粘合剂之称的“Python”。具体方法如下: 1.python中安装mlab 下载https://pypi.python.org/pypi/mlab 安装命令:python setup.py ...
  • C# 调用MATLAB程序绘图

    2019-04-23 11:42:39
    C#调用MATLAB程序绘图,压缩文件包含.m文件,仅供参考
  • VS调用matlab(win7环境

    2011-11-12 13:45:41
    win7环境下,VS 2010调用matlab2010方法。先将m文件编译成动态库再使用VC调用,不是mex函数的方法,更加灵活。
  • VS2017调用Matlab2016b进行绘图

    万次阅读 2018-06-25 00:19:12
    1、运行环境 Windows 10 64bit Visual Studio Community 2017 Matlab 2016b 注:也适用于Matlab 2017a 2、matlab安装补丁 打开...打开对应的matlab版本“Support...
  • python调用matlab生成的动态库-附件资源

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,618
精华内容 31,447
关键字:

vs调用matlab

matlab 订阅