zoukankan      html  css  js  c++  java
  • Matlab -- Matlab生成dll、库文件和头文件方法(win10+VS2015+Matlab2019b)

    MATLAB具有很高的计算性能,在该平台上很多算法易于实现,而有时需要使用C++调用Matlab编写的程序,可以将该函数编译成dll库文件,之后在C++中对其进行调用。

    本文详细讲解在Matlab中将函数编译成库文件,并在C++中进行调用的方法。

    Matlab编译

    首先,matlab中写好函数

    第一步:在matlab的命令行窗口中输入mex -setup,会出现以下界面。

     第二步:点击界面的“mex -setup C++”,会出现如下提示。

     以上两步说明Matlab的编译环境可行,并且是使用VS2015进行编译。不同版本的matlab使用的编译器可能不同,请确保matlab配置的编译器与之后使用的C++环境保持一致。

    第三步:对matlab的函数进行编译。注意:这里只能对matlab的function进行编译,并不能对一般的.m脚本进行编译。我们采用mcc的方式进行编译,命令如下:

    mcc -W cpplib:testmat -T link:lib testmat.m -C

    解释:
    -W是控制编译之后的封装格式;
    cpplib是指编译成C++的lib,如果需要编译成C的lib,就用lib即可,去掉cpp;
    cpplib后面的是需要生成文件的文件名,是自己取的,我们取名为testmat;
    -T表示目标,link:lib表示要连接到一个库文件的目标,目标的名字即是.m函数的名字。
    其他具体含义可以通过mcc –help命令查看,注意参数的大小写。

    第五步:等待matlab进行编译,这个过程可能需要几分钟。编译完成后的命令行显示如下信息:

     需要用到的文件只有四个:testmat.ctf,testmat.dll,testmat.lib,testmat.h。

    PS:使用上述方法时,我第一次成功了,后边同样的操作一直失败,报错如下图:

    查了很久也没有找到原因,在Matlab Answers里看到一个问答,

     有个回答如下:

    大概意思就是把主编译文件.m放在matlab主程序文件夹内(我试了不行..),或者使用deploytool,这个工具可以生成特定文件夹内.m文件dll等库的功能。

    于是乎,使用deploytool生成头文件以及库文件等,成功,deploytool方法如下:

    第一步:在命令行窗口输入mbuild -setup(注意-之前加空格,否则报错)

     第二步:点击mex -setup C++ -client MBUILD后,继续输入deploytool

     等待弹出窗口,如下图,选择Library Compiler

    弹出窗口,一定要选择C++ Shared Library,选其他的生成的不对,然后点击右侧加号,选择.m文件,

    窗口下边会出现即将生成的文件

     点击右上角生成按钮,选择生成文件放置文件夹,等待打包完成。

     

     最后生成是文件在对应文件夹中,.ctf文件在v2文件夹里,自己找找,到这里matlab生成库文件就完成了

  • 相关阅读:
    3星|《葡萄酒经济学》:行业概况与资料汇编
    抖音、YouTube、Facebook等新媒体营销与运营相关14本书
    3星|《游戏学》:中美两国游戏产业概况
    3星|《新引爆点》:企业玩抖音入门
    4星|《未来的处方》:美国医疗组织应对奥巴马医改的成功经验12条
    2.5星|《知识付费》:行业相关资料的综述与堆砌
    《都挺好》原著小说大结局(严重剧透)
    OKR相关4本书,好书3本
    2.5星|《区块链超入门》:偏技术的介绍,没介绍过去两年间币圈的各种或狗血或精彩的故事与事故
    《经济学人》电子书15本,大部分水平较高
  • 原文地址:https://www.cnblogs.com/zzzsj/p/14630559.html
Copyright © 2011-2022 走看看