VS/QT -- 调用matlab生成的DLL库
matlab生成dll的方法之前有些,这篇是C++调用dll的流程:
配置环境:
1、新建vc工程,设置runtime引用头文件及相关库,将生成的dll,lib,.h文件拷贝至工程目录,将.h文件添加至工程。QT里在.pro文件里加上lib路径,在debug文件里加上dll;
其中,mclmcrrt.lib是runtime库,fitCircuit.lib是导出的库。
2、调用
(1)通过runtime调用matlab导出的dll,需要初始化环境,因此要在程序启动时调用初始化环境函数,此函数定义在matlab头文件mclmcrrt.h中,注意此函数只能在程序启动时调用一次,调用多次会出错。
if( false == mclInitializeApplication(NULL, 0)) //testmatInitialize()是Matlab自动生成的初始化函数,调用函数之前必须先初始化
{
qDebug()<<"fail";
return FALSE;
}
(2)程序退出时结束环境
TerminateApplication();
2.1、调用函数
查看上边matlab生成的头文件:testmat.h
依次调用如下三个函数实现对应功能:
// 函数初始化 bool MW_CALL_CONV testmatInitialize(void); // 目标函数 extern LIB_testmat_CPP_API void MW_CALL_CONV testmat(int nargout, mwArray& R, const mwArray& XY_data); // 结束函数 void MW_CALL_CONV testmatTerminate(void);
其中nargout是函数准备输出参数的个数,由函数实际情况决定,nargout参数赋值为1,表示只输出一个参数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!