精华内容
下载资源
问答
  • matlab调用vc生成的dll的具体步骤 Matlab 调 用 C 生成的 dll 的具体步骤、、 C 生成 dll 文件(以 vs2008 为例)1 创建项目: Win32->Win32 项目,名称:MyDLL2 新建头文件 testdll.h,并 编写相关程序注:一定要...

    41528d3028836879cd698677c3999917.gifmatlab调用vc生成的dll的具体步骤

    Matlab 调 用 C 生成的 dll 的具体步骤、、 C 生成 dll 文件(以 vs2008 为例)1 创建项目: Win32->Win32 项目,名称:MyDLL2 新建头文件 testdll.h,并 编写相关程序注:一定要注意头文件的写法,此法是支持 C的头文件,Matlab 调用 DLL只支持用 C语法写成的 DLL,C++的一些关键特性如类、继承等都不支持,用起来的话局限性很大的,还不如单独再用 M文件把算法再写一遍进行仿真呢。具体程序如下#ifndef MATLABDLLTEST_H#define MATLABDLLTEST_H#ifdef __cplusplusextern “C“{#endif__declspec(dllexport) double add(double x, double y);#ifdef __cplusplus}#endif#endif3 新建源文件 testdll.cpp,并编写相关程序具体程序如下所示:#include “stdafx.h“#include “testdll.h“double add(double x, double y){return (x+y);}4 新建模块定义文件 mydll.def,并编写相关程序、、 Matlab 调用生成的 dll1、编译器准备1)在 Matlab 的命令窗口输入:mex -setup2)选择 你的编译器,我的是:[2] Microsoft Visual C++ 2008 SP1 in c:\Program Files\Microsoft Visual Studio 9.02、加载 DLL:把编译连接之后产生的 myDLL.dll 和 testdll.h 文件拷贝到 Matlab 的当前工作目录下,并编写.m 函数具体程序clc;clear all;close all;addpath( dll 的具体路径即 Matlab 的当前工作路径 )%输入 dll 文件具体的存储路径loadlibrary MyDLL testDLL.h alias lib%加载 MyDLL 库,并重命名为 lib,注意加载时常常需要 MyDLL 的头文件libfunctionsview lib %执行此命令后会生成如下窗口calllib( lib , add , 1.0,2.0)%只有出现上述窗口才能使用此命令参考链接:1、 mydll.def,而且在 Matlab 读取路径是的指令也是错误的,参考本文的指令就能跑通)2、 VS 生成 dll 的方法,但如果想用 Matlab 调用生成的 dll 在 编写头文件时一定要用上文的编写指令,而不这篇链接里的指令,因为链接里的指令是生成C++的指令,而 Matlab 只识别 C 的写法)

    展开全文
  • Matlab调用动态库是需要头文件和动态库,并且保证导出的动态库文件名不能改变,在头文件的最后还要有换号(否则会出现NOnewling的错误) 要保证导出名字不改变则需要使用*.def文件。下面用自己练习的实例展示: ...

    使用Matlab很是方便,当然c是目前最流行的语言,所以对他们的混合编程是重要的。看到相当一部分攻略,感觉用动态库的形式是最方便的。

    用Matlab调用动态库是需要头文件和动态库,并且保证导出的动态库文件名不能改变,在头文件的最后还要有换号(否则会出现NO newling的错误)

    要保证导出名字不改变则需要使用*.def文件。下面用自己练习的实例展示:

    vc6.0建立建立动态库工程,

    在test.cpp

    _declspec(dllexport) int add(int a,int b)

    {

    return a+b;

    }

     

    _declspec(dllexport) int  subtract(int a,int b)

    {

    return a-b;

    }

    或者

     int  __stdcall add(int a,int b)

    {

    return a+b;

    }

     

    int  __stdcall subtract(int a,int b)

    {

    return a-b;

    }

    或者

     int  add(int a,int b)

    {

    return a+b;

    }

     

    int   subtract(int a,int b)

    {

    return a-b;

    }

     

     

    test.def文件:

     

    LIBRARY test//不是必须的可以不要

    EXPORTS

    add

    subtract

     

    test.h文件:

    //函数的声明

    int  add(int a,int b);

     int subtract(int a,int b);

    //或者是以上三种的声明

    空行//没有空行在Matlab中会出现警告

     

    检测查看test.dll文件中的函数名字:

    C:\Users\Administrator>d:

     

    D:\>dumpbin -exports test.dll//必须加上后缀名字

    Microsoft (R) COFF Binary File Dumper Version 6.00.8168

    Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

     

     

    Dump of file test.dll

     

    File Type: DLL

     

      Section contains the following exports for test.dll

     

               0 characteristics

        513812F4 time date stamp Thu Mar 07 12:09:24 2013

            0.00 version

               1 ordinal base

               2 number of functions

               2 number of names

     

        ordinal hint RVA      name

     

              1    0 0000100A add

              2    1 00001005 subtract//后面不能出现其他的数字。

     

      Summary

     

            7000 .data

            1000 .idata

            3000 .rdata

            2000 .reloc

           2A000 .text

     

    D:\>

     

    cmd进入控制台,进入test.dll的目录

    下面把test.dll和test.h拷贝到Matlab的工作目录下

    loadlibrary('test','test.h');

    x=8;y=9;

    calllib('test','add',x,y);

    unloadlibrary('test');

    转载于:https://www.cnblogs.com/kingboys/archive/2013/03/22/2974786.html

    展开全文
  • MATLABVC-利用VC 调用matlab数学库和图形库的.rar 上传MATLABVC的接口设计,及在利用VC调用MATLAB的一些资料,希望对大家有用!
  • MATLABVC-MatlabVC的接口设计.pdf 上传MATLABVC的接口设计,及在利用VC调用MATLAB的一些资料,希望对大家有用!
  • C语言编写DLL文件,用MTALB调用仍采用一个计算整数的平方和立方的plf.dll文件方法过程一采用Win32 Dynamic-Link Library建立。过程:本次采用建立一个计算整数的平方和立方的plf.dll文件。1文件—新建—工程—Win32 ...

    C语言编写DLL文件,用MTALB调用

    仍采用一个计算整数的平方和立方的plf.dll文件

    方法过程

    一采用Win32 Dynamic-Link Library建立。

    过程:本次采用建立一个计算整数的平方和立方的plf.dll文件。

    1文件—新建—工程—Win32 Dynamic-Link Library,工程名称为plf,点击确定,后选择一个空白文档。

    2,点击做下角FileView。显示如图1所示

    3e5223dfd6d8973552489badebb4d53a.png

    2.左上角文件—新建—文件—C++ Source File,输入名称为plf.,建立空白文档plf.cpp

    在其内输入代码如图2所示:

    747c96875c477ce4677297e29d5cae3b.png

    3左上角文件—新建—文件—C++ Header File,输入名称为plf.,建立空白文档plf.h

    在其内输入代码如图3所示:

    extern "C" __declspec(dllexport) int _stdcall sq( int i);

    extern "C" __declspec(dllexport) int _stdcall cub( int j);

    注意:extern "C" __,不能使用extern "C" _否则MATLAB不能调用,而C和VB可调用。

    展开全文
  • vc调用matlab

    2012-07-04 15:16:40
    vc调用matlab源代码,适合初学者参考
  • vc调用matlab问题

    2013-07-24 09:40:19
    VC调用MATLAB的方法研究 vc调用matlab问题解决
  • VC调用MATLAB

    2010-04-02 13:02:36
    VC调用MATLABVC调用MATLABVC调用MATLAB
  • VC 调用MATLAB

    2009-01-16 15:59:48
    VC环境 调用MATLAB库函数的环境设置和简单例子,可以对调用matlab库函数等有启发。呵呵
  • VC调用Matlab

    2010-05-25 10:47:09
    针对VC调用Matlab三种常用方法详细介绍,并分析各种方法的优缺点.
  • VC调用MATLAB

    2014-04-09 19:09:16
    猴急了几天,终于把用VC实现FRFT变换的想法给K掉了,大数库太难找,找到了还不一定马上就能用,我懒,遂决定用matlab把frft算法实现,封装成一个dll,然后供VC调用VC调用Matlab的方法主要有两种,一种是我刚才说...
    
    

    VC调用Matlab的方法主要有两种,一种是我刚才说的把matlab的程序封装成dll,这样通用性较强,而且比较方便。另一种是把matlab作为一个服务器,vc当客户端,把数据传给服务器,经matlab处理后,再把结果传递给VC。这两种方法的区别我还没有总结,等过几天把第二种方法介绍之后再一并总结。
    第一种方法如下(我坦白,是抄别人的,经过自己的修改了)

    1.当然是先建立matlab的m文件。

    我在matlab中定义了一个函数, 其m文件如下:

    function re=add(C)
    N=73;alpha=(0.2)*(pi/2);
    Ts=sqrt(2*pi/N); t=-(N-1)/2:(N-1)/2; t=t'; t=t*Ts;
    variance=pi; hh=zeros(N); hh(:,1)=1; hh(:,2)=2*t;
    for k=3:N;%k阶数
    hh(:,k)=hh(:,k-1).*t*2-2*(k-2)*hh(:,k-2); %计算n阶hermite函数的表达式,t自变量
    end
    HH(:,1)=1/sqrt(sqrt(variance))*hh(:,1).*exp(-t.*t/2);
    for k=2:N;
    HH(:,k)=exp(-t.*t/2).*hh(:,k)/sqrt(2.^(k-1)* factorial(k-1)*sqrt(variance));
    end
    if mod(N,2)==1;
    W=0:N-1; k=exp(-i*alpha*W/1.6); D=diag(k);
    else
    W=0:N-2; W=cat(2,W,[N]); k=exp(-i*alpha*W/1.6); D=diag(k);
    end
    FF=Ts*HH*D*HH';
    Z=C';
    X=FF*Z;
    re=real(X);
    end

    保存为add.m

    2.下面来对matlab编译环境进行设置。打开matlab,在命令行状态下键入:

    mex-setup

    然后出现如下提示:

    Select a compiler:

     [1] Borland C++Builder version 5.0 in C:Program FilesBorland

     [2] Lcc C version 2.4 in F:SOFTSHAREMATLAB65syslcc

     [3] Microsoft Visual C/C++ version 6.0 in C:Program FilesMicrosoft Visual Studio

     [0] None

    Compiler:

    这里我们选择’3’。(如果使用其他的编译器比如BCB,那么就可以相应的选择’1’)

    然后,继续在命令行状态下输入:

    mbuild –setup

    Please choose your compiler for building standalone MATLAB applications: 

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

    Select a compiler:

     [1] Borland C++Builder version 5.0 in C:Program FilesBorland

     [2] Lcc C version 2.4 in F:SOFTSHAREMATLAB65syslcc

     [3] Microsoft Visual C/C++ version 6.0 in C:Program FilesMicrosoft Visual Studio

     [0] None

    Compiler:

    这里需要几步确认。大家按情况操作即可。

    3.对VC的编译器环境进行设置。在Tools-options-directory里面设置include和lib的路径,分别添加一项,指向matlab安装目录中的externinclude和 externlibwin32digitaldf50

    (我这里用的是matlab6.5,安装目录为C:MATLAB6p5,版本或安装路径不一样的请自行修改)

    4.这一步比较关键。在这一步中,将matlab中的.m文件转换为dll。

    在matlab命令行中输入:

    mcc -t -h -L C -W lib:ppp -T link:lib add.m

    其中add.m就是你刚才保存的m文件名字,ppp是要生成的链接库的文件名,随便起的

    至此,可以发现在add.m所在的目录中产生了一大堆文件。我们只用其中3个:

    ppp.h    ppp.lib     ppp.dll

    5.新建一个VC工程。将上面这3个文件拷贝到VC工程所在的目录中,以便VC调用之。

    6.进行VC编程。

    首先,在cpp文件中加入:  #include “ppp.h”

    然后,设置VC的链接库。在project-settings-link下的object/library modules中加入:

    ppp.lib libmx.lib libmatlb.lib libmmfile.lib()

    至此,VC的编译环境设置完毕。下面就是编程部分了。

    7.编程部分的关键:接口和数据类型的转换

    先给出VC实现的源代码:         

    /************************************************************************/
    /*
    Description: 一维FRFT变换,
    param: t为输入的数组
      dimension维数
    Note:DO NOT forget to release the memory of "t"
                                                                         */
    /************************************************************************/
    void CTestmatlabDoc::FRFT1D(double *t,int dimension)
    {
     if(dimension%2 == 0)
     {
      AfxMessageBox("不是奇数");
      return;
     }
     double * md = NULL;
     DWORD begintime = timeGetTime();
     //调用matlab创建2个矩阵
     mxArray *A=mclGetUninitializedArray();
     mxArray *C=mclGetUninitializedArray();
     //将C语言中的变量值赋给matlab中的矩阵
     mlfAssign(&A,mlfDoubleMatrix(1,dimension,t,NULL));
        mlfAssign(&C,mlfAdd(A));
     //将matlab中的矩阵的指针传递给C语言中的指向double的指针
     md=mxGetPr(C);
     memcpy(t,md,dimension*sizeof(double));
     //释放这些矩阵
     mxDestroyArray(A);
     mxDestroyArray(C);

    }

    相信看到里面的注释,我们就明白的差不多了。

    大家可以看出来,在进行调用的时候,我们使用的是m文件的文件名add生成的函数mlfAdd,而不是m文件中定义的add

    展开全文
  • 在VS 2005中使用VC7.0来调用matlab7.0进行科学计算 1、新建一个空MFC单文档项目 2、在下拉菜单工具中点击选项,打开选项窗口 2、在选项窗口中,选择项目-〉VC++目录,在显示目录中选择包含文件,添加matlab路径 ...
  • vc 调用 matlab

    2014-06-30 10:15:16
    里面内含 matalb的m文件 可以直接运行,有两个例子,一个是简单的加法 ,另一个是输入输出矩阵。
  • 本文是仿照这篇文章而来的:《VC调用matlab中定义的.m文件中的函数的实例》他的文章中使用的是VC6.0 + MATLAB6.5,有的东西已经不能使用了,因此我这里再写一篇如何用VC2005来调用MATLAB2009a中编写的m文件。...
  • vc调用MATLAB设置

    2010-07-17 18:06:31
    vc调用MATLAB设置 利用MATLAB的图形方便的显示c Code结果
  • (用)VC调用matlab engine示例(用)VC调用matlab engine示例/VC源代码(用)VC调用matlab engine示例/VC源代码/ReadMe.txt(用)VC调用matlab engine示例/VC源代码/resource.h(用)VC调用matlab engine示例/VC源代码/StdAfx...
  • vc 调用matlab

    2019-09-03 14:41:24
    转 https://www.cnblogs.com/renhang888/archive/2012/05/29/2524779.html https://www.cnblogs.com/nktblog/archive/2012/04/07/2435624.html
  • 利用VC调用MATLAB函数

    2010-06-04 12:16:08
    本文介绍了在VC曰环境下调用MATLAB6.X提供的数学岸和图形库的方法,实现了在VC刊州环境下脱离MATLAB调用其数据处理和图形显示的功能。
  • 利用MATLAB生成供VC调用的库的步骤
  • vc6.0调用matlab文件

    2013-01-24 21:32:33
    vc调用matlab文件,易入门,matlab需要安装编译器。
  • VC调用MATLAB的方法研究
  • matlabvc混合编程

    2010-11-04 19:41:17
    matlabvc混合编程的源程序。用vc编程调用matlab engine方法。
  • vc调用matlab实例演示

    2011-05-24 18:54:07
    vc调用matlab编写的程序,简单实用
  • VC调用matlab函数

    千次阅读 2011-09-22 21:19:25
    最近在学习matlab,先试一个VC调用matlab函数的简单例子 用的是VC++6.0,matlab7.8也就是matlabR2009   首先在matlab下设置环境 >> mbuild -setup Please choose your compiler for
  • 使用VC6.0与VS2008,在配置上面都是类似的,唯一的区别在与用蓝色标出的部分 一. MATLAB Compiler 配置MATLAB编译器,主要是在MATLAB的命令窗口先后输入两条命令:"mex -setup"和"mbuild -setup",然后选择...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 624
精华内容 249
关键字:

matlab调用vc

matlab 订阅