我想知道爲什麼我沒有選擇公共語言運行庫時,我使用的編譯Matlab庫的代碼崩潰。 對於一個小例子,我試過編譯以下Matlab的功能到一個共享庫:使用下面的調用中冶編譯的Matlab代碼崩潰時沒有選擇/ clr
function [volOut, volAvg]=testVarPass(volIn)
volOut=double(volIn);
volAvg=mean(volOut(:));
end
: MCC -B csharedlib:MYLIB testVarPass.m
接下來,我已經設置了一個Visual Studios 2010控制檯項目。
#include "stdafx.h"
#include "matrix.h"
#include "mylib.h"
int _tmain(int argc, _TCHAR* argv[])
{
mxArray *vol_in;
mxArray *vol_out;
mxArray *vol_avg;
mwSize dim_list[3];
double *vol_avg_ptr;
dim_list[0]=10;
dim_list[1]=10;
dim_list[2]=10;
if(!mclInitializeApplication(NULL,0)) { //initialize Matlab Compiler Runtime
return -1;
}
if (!mylibInitialize()) //initialize library
{
return -2;
}
vol_in=mxCreateNumericArray(3,dim_list, mxINT16_CLASS, mxREAL); //make a sample 3d array
mlfTestVarPass(2, &vol_out, &vol_avg, vol_in); //crashes here
vol_avg_ptr=mxGetPr(vol_avg);
/* Call the MCR and library termination functions */
mylibTerminate();
mclTerminateApplication();
return 0;
}
如果我建立與公共語言運行庫支持項目設置爲:/clr...everything工作正常。 如果我將公共語言運行時支持設置爲以下項目:無......首先,當調用mylibInitialize時,調試器會吐出許多異常。最常見的是:varflowFailed,tffFailed,CryptoPP,jitCgFailed和xsd_binder :: MalformedDocumentError。其次,mlfTestVarPass調用會因訪問衝突而崩潰。
我和我一起工作的程序員都在想爲什麼。
其他信息: Windows 7的 Visual Studio 2010中,SP1的Windows SDK 7.1 Matlab的2013b