• 方法文件Matlab调用动态链接库


    在写这篇文章之前,xxx已写过了几篇关于改方法文件主题的文章,想要了解的朋友可以去翻一下之前的文章

        版权所有,载转请注明出处:http://guangboo.org/2013/05/02/matlab-dll-file

        Matlab的势优就是矩阵计算,量大的算法库等,对于非矩阵计算说来可能就没有多高的性能和势优。Matlab持支应用C语言和Fortan编写扩展,这样就能够补弥Matlab不善于的部份。有些时候我们要需在Matlab中调用已有的dll,防止写C扩展。

        比如要需在matlab中取获机器码,而这个机器码的取获方法是现成的,只是这个方法是应用C编写的,并已编译成libhelper.dll文件里。那么我们就能够这些编译一个get_mac_id的数函,来调用该dll中的数函get_machine_code的方法。

        要需有libhelper.h文件,该头文件要含包get_machine_code数函的声明,如:

    int __stdcall get_machine_code(char *buf);

        libhelper.h头文件是必须的,并且文件名也要和dll文件名分歧。然后可以编写m文件get_id.m,如下:

        每日一道理
    书籍好比一架梯子,它能引领人们登上文化的殿堂;书籍如同一把钥匙,它将帮助我们开启心灵的智慧之窗;书籍犹如一条小船,它会载着我们驶向知识的海洋。
    function code = get_mac_id()
    %GETID Summary of this function goes here
    %   Detailed explanation goes here
    try
        [notfound,warnings] = loadlibrary('libhelper.dll');
        arg = '';
        %arg = libpointer('stringPtr',buf);
        [a, buf2] = calllib('libhelper', 'get_machine_code', arg);
        unloadlibrary('libhelper');
    catch
        code = '';
        return;
    end
    
    buf = unicode2native(buf2, '');
    
    mac_buffer = repmat('0', 1, 64);
    len = length(buf2);
    
    for i=1:len
        c =  dec2hex(uint8(buf(i)));
        if length(c) == 1
            mac_buffer(i*2-1:i*2) = ['0' c];
        else
            mac_buffer(i*2-1:i*2) = c;
        end
    end
    
    if length(mac_buffer) > 32
        code = mac_buffer(1:32);
    else
        code = mac_buffer;
    end
    end

        调用方法:

    >> 
    >> get_mac_id()
    
    ans =
    
    3F5E5DB9083770DA154D15A55431229C
    
    >>

    文章结束给大家分享下程序员的一些笑话语录: 女人篇
      有的女人就是Windows虽然很优秀,但是安全隐患太大。
      有的女人就是MFC她条件很好,然而不是谁都能玩的起。
      有的女人就是C#长的很漂亮,但是家务活不行。
      有的女人就是C++,她会默默的为你做很多的事情。
      有的女人就是汇编虽然很麻烦,但是有的时候还得求它。
      有的女人就是SQL,她会为你的发展带来莫大的帮助。

  • 相关阅读:
    python 操作mysql
    python多线程
    python socket 网络编程
    nginx源码编译安装
    CentOS网卡配置文件
    使用本地yum源
    ping github 请求超时
    ping github 请求超时
    设计模式-装饰器模式
    设计模式-装饰器模式
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3057264.html
Copyright © 2020-2023  润新知