2015-02-06 30 views
1

我正在處理一個與C#dll庫接口的小型MATLAB項目。 MATLAB文件可加載組件如下所述: http://uk.mathworks.com/help/matlab/ref/net.addassembly.html?s_tid=gn_loc_drophttp://uk.mathworks.com/help/matlab/matlab_external/an-assembly-is-a-library-of-net-classes.html從MATLAB發佈一個.NET程序集

我呼籲示例如下:

NET.addAssembly('C:\MyLibrary.dll'); 

一切都好了這裏,我甚至可以在VS調試通過附加到MATLAB過程,但是有一個小問題。沒有'removeAssembly'方法從MATLAB過程中斷開程序集。如果我想在VS中進行更改,我必須重新啓動MATLAB來解鎖DLL,這真的是一個很麻煩的問題。我甚至試圖使用解鎖軟件沒有運氣..MATLAB凍結。

有誰知道如何處理這個?

回答

1

您可以從MATLAB本身開始新的Matlab的實例與系統調用和Matlab command line options之一。然後你可以在新實例中測試你的.NET庫。在測試之後關閉新實例時,將釋放.NET庫。有了這個解決方法,你不需要完全重新打開Matlab。不要在主Matlab實例中加載.NET程序集。

打開一個新的Matlab的實例(整個IDE GUI)一的Windows PC

log_str = '-logfile "C:\Temp\logfile.txt"'; 
system_str = [ 'matlab.exe -nosplash ' log_str ]; 
system(system_str); 

通過-r自動執行新Matlab的情況下的M文件,而IDE GUI與-nodesktop和有新實例在測試後自行關閉:

log_str = '-logfile "C:\Temp\logfile.txt"'; 
my_file = 'C:\Temp\test.m'; 
system_str = [ 'matlab.exe -nosplash -nodesktop -r "run(''' my_file '''), pause(2), exit" ' log_str ]; 
system(system_str); 

日誌文件記錄Matlab實例的控制檯輸出。這是可選的,但對測試有幫助。如果您希望您的子實例是異步的(即將句柄返回到主Matlab實例),則可以在system_str的末尾添加' &'