參考: https://ww2.mathworks.cn/help/compiler_sdk/gs/create-a-cc-matlab-data-application.html
https://ww2.mathworks.cn/help/compiler_sdk/cxx_mwArray_API_shared_library.html
https://ww2.mathworks.cn/help/compiler_sdk/cxx_MATLAB_Data_API_shared_library.html?s_tid=CRUX_lftnav
https://ww2.mathworks.cn/help/compiler_sdk/gs/create-a-cc-mwarray-application.html
環(huán)境:?win10、matlab2020a、qtcreater5.12.10(mingw64)
1.mex -setup,return
no compile(提示沒有編譯器)
2.

3

4選擇安裝

5編寫腳本myFunc.m
function [C]=myFunc(A,B)
C=A+B;
end
6

7輸入libraryCompiler

8使用生成的 for_redistribution_files_only?instructions(目錄中的)myFunc.dll、myFunc.h、myFunc.lib
9在pro文件中添加
INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/include/ -lmyFunc
INCLUDEPATH += ../../matlab2020a/extern/include
INCLUDEPATH += ../../matlab2020a/extern/include/win64
# 用到的MATLAB 的.lib庫(kù)文件
INCLUDEPATH += ../../matlab2020a/extern/lib/win64/mingw64
DEPENDPATH += ../../matlab2020a/extern/lib/win64/mingw64
LIBS+= -L../../matlab2020a/extern/lib/win64/mingw64 -llibmex
LIBS+= -L../../matlab2020a/extern/lib/win64/mingw64 -llibmx
LIBS+= -L../../matlab2020a/extern/lib/win64/mingw64 -llibmat
LIBS+= -L../../matlab2020a/extern/lib/win64/mingw64 -llibeng
LIBS+= -L../../matlab2020a/extern/lib/win64/mingw64 -lmclmcr
LIBS+= -L../../matlab2020a/extern/lib/win64/mingw64 -lmclmcrrt
10Cpp文件中

11編譯 沒有問題?運(yùn)行提示
`../../matlab2020a\bin\win64\icudt64.dll':Shared library architecture i386 is not compatible with target architecturei386:x86-64.
SetThrowSegvLongjmpSEHFilter(): filterfunction ../../matlab2020aed
12運(yùn)行myFuncInitialize 崩潰
13解決方法把mclInitializeApplication(NULL,0) 替換成
const char *args[] = {"-nojvm"};
const int count = sizeof(args) / sizeof(args[0]);
mclInitializeApplication(args, count);
注意最后需要 不需要用 matlab生成庫(kù)后需要添加
mclTerminateApplication();?//不添加程序不能正常退出
xxTerminate();//xx位庫(kù)的名稱
本人電腦 編譯matlab導(dǎo)出的mingw和msvc的c++動(dòng)態(tài)庫(kù)都可以。 但是本人matlab 不能導(dǎo)出 msvc編譯器的c++動(dòng)她庫(kù)(可能是因?yàn)槲业膙s重新裝過)
這里有一個(gè)大坑 就是這樣調(diào)用了之后, 打開mysql 數(shù)據(jù)庫(kù)失敗