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,表示只輸出一個參數。