• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

【MATLAB与C的混合编程】之【C程序调用M文件编译后得到的DLL文件】 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

直接给出步骤:

1)设置Matlab的编译器,见【MATLAB与C的混合编程】之【MATLAB调用C程序】

2)编译m文件成dll.

【2.1】

---------建立MyAdd.m-------------

function [c] = MyAdd(a, b);
c = a + b;

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

【2.2】

Matlab中运行mcc -W cpplib:libMyAdd -T link:lib MyAdd

成功后,我们会发现目录下多了很多文件,其中libMyAdd.dll、libMyAdd.lib、libMyAdd.h为有用文件,接下来要用到。

3)设置VS2008的“包含文件”、“库文件”,见【MATLAB与C的混合编程】之【C程序调用Matlab计算引擎】(1)

4)编写C调用dll.

a)VS2008中建立win32控制台空项目

b)项目中加载libMyAdd.dll、libMyAdd.lib、libMyAdd.h这三个文件;前两个放在C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\Matlab_C\Debug,后一个放在C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\Matlab_C\Matlab_C

c)写代码,如下:

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

#pragma comment( lib, "mclmcrrt.lib" )
#pragma comment( lib, "libmx.lib" )
#pragma comment( lib, "libmat.lib" )
#pragma comment( lib, "mclmcr.lib" )
#include "mclmcr.h"
#include "matrix.h"
#include "mclcppclass.h"
#include "libMyAdd.h"
#include <stdio.h>
#include <iostream>
using namespace std;
int main(void)
{
    double a = 6;
    double b = 9;
    double c;

    // initialize lib,这里必须做初始化!
    if( !libMyAddInitialize())
    {
        cout << "Could not initialize libMyAdd!" << std::endl;
        return -1;
    }

    // 为变量分配内存空间,可以查帮助mwArray
    mwArray mwA(1, 1, mxDOUBLE_CLASS); // 1,1表示矩阵的大小(所有maltab只有一种变量,就是矩阵,为了和Cpp变量接轨,设置成1*1的矩阵,mxDOUBLE_CLASS表示变量的精 度)
    mwArray mwB(1, 1, mxDOUBLE_CLASS);
    mwArray mwC(1, 1, mxDOUBLE_CLASS);

    // set data,不用我解释了吧,很简单的,调用类里面的SetData函数给类赋值
    mwA.SetData(&a, 1);
    mwB.SetData(&b, 1);
    // using my add,掉我自己写的函数
    MyAdd(1, mwC, mwA, mwB);
    // get data,不用我解释了吧,很简单的,调用类里面的Get函数获取取函数返回值
    c = mwC.Get(1, 1);
    printf("c is %f\n", c);
    // 后面是一些终止调用的程序
    // terminate the lib
    libMyAddTerminate();
    // terminate MCR
    mclTerminateApplication();
    return 0;
}

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

结果如图:

==========================================

注意事项:

1.此程序由于是调用DLL文件,故与Matlab无关,运行时不需要Matlab环境

2.项目视图如下:

【引文】http://hi.baidu.com/hxk622/blog/item/884b5e1daf3d6cf8e0fe0bad.html


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
MATLAB中使用Cell对M文件分节发布时间:2022-07-18
下一篇:
如何规范地编写一个MATLAB函数文件发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap