2015-04-04 127 views
1

我有一個m文件,我用它來使用Matlab deploytool創建dll。代碼簡單地讀作:從matlab調用dll函數

function hello 
disp('Hello') 
end 

有在編譯的.dll文件六大功能導出爲:

uint8 helloInitialize 
[uint8, voidPtr, voidPtr] helloInitializeWithHandlers(voidPtr, voidPtr) 
helloPrintStackTrace 
helloTerminate 
uint8 mlfHello 
[uint8, MATLAB arrayPtr, MATLAB arrayPtr] mlxHello(int32, MATLAB arrayPtr, int32, MATLAB arrayPtr) 

現在我想用calllib從我的MATLAB命令窗口中運行這個DLL和使用 的hello功能。假設我使用正確的功能mlfHello,calllib('hello','mlfHello')沒有給我提供任何信息。請告訴我要調用哪個函數以及如何執行?

回答

0

我不是100%它仍然是這種情況,但它確實曾經是你無法加載在Matlab中創建的DLL的Matlab。

我懷疑它仍然是這樣 - 所以你不能做你想做的事情。

我沒有鏈接,因爲他們不喜歡宣傳這個事實。 AFAIK的原因是爲了避免用戶將工具箱功能編譯到DLL中,並允許其他人在沒有工具箱許可的情況下在Matlab中使用。

+0

我很困惑。這是爲什麼?對文檔的任何引用? – user3723486 2015-04-04 14:43:16

+0

我剛剛通過'libisloaded'檢查了庫,它給了我它被加載了嗎? – user3723486 2015-04-04 14:50:52

+0

這不會讓我感到驚訝,因爲DLL必須加載到Matlab來檢查。正如我說的,我不知道它是否在最新版本的情況下,但它確實是這種情況下,我試過/詢問Mathworks(〜2012b) – matlabgui 2015-04-04 14:53:24