• QTCreater调用MatLab生成的.dll文件


    软件:
    MATLAB R2021b
    Qt Creator 4.12.2 (Community)

    1、Matlab部分
    定义matlab函数:

    function ans = FUNAdd(x,y)
        ans = x + y;
    end
    
    • 1
    • 2
    • 3
    mbuild -setup
    
    • 1

    在这里插入图片描述

    选择 mex -setup C++ -client MBUILD
    
    • 1

    在这里插入图片描述

    输入 deploytool 选择 Libary Complier
    
    • 1

    在这里插入图片描述

    选择要编译的.m文件
    
    • 1

    在这里插入图片描述

    选择Package 进行打包
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    将文件夹内的 .dll .h .lib文件复制出来
    
    • 1

    在这里插入图片描述

    2、QTCreater部分

    新建项目->选择MinGW 64-bit
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    将matlab生成的.lib .h .dll放到创建的QTCreater项目文件下
    
    • 1

    在这里插入图片描述

    添加外部库
    
    • 1

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    INCLUDEPATH += 'F:/Program Files/MATLAB/R2021b/extern/include'
    INCLUDEPATH += 'F:/Program Files/MATLAB/R2021b/extern/include/win64'
    
    win32: LIBS += -L'F:/Program Files/MATLAB/R2021b/extern/lib/win64/mingw64/' -llibmex
    win32: LIBS += -L'F:/Program Files/MATLAB/R2021b/extern/lib/win64/mingw64/' -llibmx
    win32: LIBS += -L'F:/Program Files/MATLAB/R2021b/extern/lib/win64/mingw64/' -llibmat
    win32: LIBS += -L'F:/Program Files/MATLAB/R2021b/extern/lib/win64/mingw64/' -llibeng
    win32: LIBS += -L'F:/Program Files/MATLAB/R2021b/extern/lib/win64/mingw64/' -lmclmcr
    win32: LIBS += -L'F:/Program Files/MATLAB/R2021b/extern/lib/win64/mingw64/' -lmclmcrrt
    
    INCLUDEPATH += 'F:/Program Files/MATLAB/R2021b/extern/lib/win64/mingw64'
    DEPENDPATH += 'F:/Program Files/MATLAB/R2021b/extern/lib/win64/mingw64'
    INCLUDEPATH += 'F:/Program Files/MATLAB/R2021b/extern/lib/win64'
    DEPENDPATH += 'F:/Program Files/MATLAB/R2021b/extern/lib/win64'
    
    
    ***F:/Program Files/MATLAB/R2021b/***  
    换成自己的Matlab路径
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    右键->添加现有文件
    
    • 1

    在这里插入图片描述

    执行 构建->执行qmake
    
    • 1
    构建主函数代码:
    
    • 1
    #include  //引入头文件
    #include 
    #include 
    #include 
    #include 
    #include 
    using namespace std;
    int main(int argc, char *argv[])
    {
        if (!FUNAdd_NextInitialize()){ //初始化
            return -1;
        }
    
        QLibrary lib("FUNAdd_Next.dll"); //利用QLibrary加载.dll文件
    
        //定义变量
        mwArray x(1,1,mxDOUBLE_CLASS);
    
        mwArray y(1,1,mxDOUBLE_CLASS);
        x=205;
        y=15;
        mwArray ans(1,1,mxDOUBLE_CLASS);
        //输出参数个数,输出参数,输入参数。
        FUNAdd(1,ans,x,y);
    
        if (lib.load())
        {
    
           cout<<"success"<<endl;
           cout<<"x: "<<x<<endl;
           cout<<"y: "<<y<<endl;
           cout<<"ans: "<<ans<<endl;
        }
        else
        {
            cout<<"failed"<<endl;
        }
    
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    在这里插入图片描述
    在这里插入图片描述

    想要查看函数的参数 可以ctrl+点击函数
    
    • 1

    在这里插入图片描述

    欢迎点个赞👍,支持下哈~

  • 相关阅读:
    Unity 将是驱动 C# 增长的引擎吗 ?
    Redis分布式锁
    独有且优质,这些Mac软件绝了
    成都精灵云C++ 二面(hr面,30min)
    Shell根据文本内容批量修改文件名(附完整代码)
    Python + Google AI 自动修复 Sonar Bug 实践
    .NET反编译神器ILSpy怎么用?
    Redis实战篇(四)分布式锁
    Linux操作命令笔记
    这款国产API神器工具也太强了吧...让我放弃了postman
  • 原文地址:https://blog.csdn.net/Fight_adu/article/details/126083394