zoukankan      html  css  js  c++  java
  • C/C++程序通过动态链接库调用MATLAB程序

    C/C++程序通过动态链接库调用MATLAB程序

    MATLAB编译器设置

    需要设定对应的C++编译器才能编译.m文件生成可供C++调用的库文件。

    在MATLAB命令行输入:mex –setup;然后继续输入:mbuild –setup,选择已安装的VC编译器。

    将MATLAB程序编译成C/C++动态链接库

    假设存在一个myfit.m的文件需要编译成库文件:

    function c = myfit(x, y, n)
      c=polyfit(x,y,n);
    end

    2.1 将MATLAB程序编译成C动态链接库

    采用mcc编译选项:

    >>mcc –W lib:libname file.m –T link:lib

    采用捆绑命令文件:

    >>mcc –B csharedlib:libname file.m

    2.2 将MATLAB程序编译成C++动态链接库

    采用mcc编译选项:

    >>mcc –W cpplib:libname file.m –T link:lib

    采用捆绑命令文件:

    >>mcc –B cpplib:libname file.m

     2.3 编译myfit.m

    >>mcc -B cpplib:myfit myfit.m

    2.4 生成的文件格式

    成功编译会在Add.m的路径下生成一些文件:

    3 创建C/C++程序调用MATLAB函数

    3.1 设置项目平台

    根据MATLAB的位数(32或64),设置相应的项目平台。

    3.2 工程环境设置

    将前面生成的myfit.dll、myfit.h和myfit.lib三个文件拷贝到新建的C++工程目录中,并将myfit.h加入工程,将并设置工程属性。

    • 项目属性——VC++目录——包含目录:

    • 项目属性——VC++目录——库目录:

     

    • 项目属性——链接器——输入:
    mclmcrrt.lib
    myfit.lib(这是自己生成的)

    3.3 C++程序

    #include<iostream>
    #include<fstream>
    #include"myfit.h"
    #define NUM 161
    using namespace std;
    
    int main()
    {
        if (!myfitInitialize())
            return -1;
        ifstream infile("data.txt");
        double x[NUM], y[NUM];
        for (int i = 0; i < NUM&&infile; i++)
        {
            infile >> x[i] >> y[i];
        }
        infile.close();
        mwArray mwx(NUM, 1, mxDOUBLE_CLASS);
        mwArray mwy(NUM, 1, mxDOUBLE_CLASS);
        mwArray mwc;
        mwArray mwn(1, 1, mxINT32_CLASS);
        mwx.SetData(x, NUM);
        mwy.SetData(y, NUM);
        int n;
        cout << "请输入多项式拟合的阶数:";
        cin >> n;
        mwn = n;
        cin.get();
        myfit(1, mwc, mwx, mwy,mwn);
        double c[4];
        mwc.GetData(c, 4);
        cout << "多项式系数为:" << mwc << endl;
        cin.get();
        myfitTerminate();
        return 0;
    }

    将需要的数据放入工程目录下,编译运行。 

    输出结果如下:

     

         将数据文件、myfit.dll和.exe文件放在同一目录下便可脱离VC++独立运行。如果要在没有安装MATLAB的电脑里运行,需要安装MCR,MCR安装文件的位置为:[MATLAB安装目录] oolboxcompilerdeploywin64。

  • 相关阅读:
    公安备案接入服务商如何填写?(网站接入信息)
    VSCode 开发Vue必备插件
    阿里云ecs从零配置centos 安装宝塔bt环境 (安装失败提示setuptools installation failed)
    hover时下划线从中间向两端渐变
    phpcms v9后台增加阅读量字段,可任意修改阅读量
    织梦登录后台变空白解决方法大全
    html鼠标滚动后导航栏吸顶效果
    关于height:100%和height:100vh的区别
    mycat
    Hash碰撞
  • 原文地址:https://www.cnblogs.com/jmliao/p/5575202.html
Copyright © 2011-2022 走看看