VS C++ 和 MCR 调用MATLAB DLL

#最开始尝试了MFC+matlab DLL的方法 C++还没玩通 最后还是放弃MFC了 看的经验没有给出MFC的完整程序

运行环境

MCRuntime 9.8 (MATLABR2020A)
VS2017
注:这里不是调用matlab引擎的方法 在客户机不需要安装MATLAB 只要安装配置MCR即可

MATLAB 代码(以myfit为例,程序来自亲测可行的文章)

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

MATLAB生成DLL

装了VS2017 自己会识别出编译器
在这里插入图片描述
命令格式:mcc -B cpplib:myfit myfit.m
需要的文件 myfit.lib myfit.h myfit.dll

VS 环境设置(重要)

#这里我复制(那篇亲测可行文章的)
将前面生成的myfit.dll、myfit.h和myfit.lib三个文件拷贝到新建的C++工程目录中,并将myfit.h加入工程,并设置工程属性。
(如果使用MCR将这些改成MCR对应文件的目录即可,都是有的)
项目属性——VC++目录——包含目录:
在这里插入图片描述
项目属性——VC++目录——库目录:
在这里插入图片描述
项目属性——链接器——输入:
mclmcrrt.lib
myfit.lib(这是自己生成的)

C++代码(和matlab代码来自一个文章,这里需要读取TXT,但没有这个文件也能运行)

#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;
}

运行结果

在这里插入图片描述
这里红线是MATLAB报的错 引用成功

再提一次重点文章,帮助太大了

C++调用DLL 可用,记得设置64位
MFC 还是太难 这个文章基本可以实现通用了

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值