[問題] c++呼叫matlab function(dll)

作者: moandmo726 (Lance)   2014-12-08 22:52:27
如果有違反板規麻煩告知我,我自D
我現在有一個matlab的檔案叫做 mutualinfo.m
function h = mutualinfo(vec1,vec2)
[p12, p1, p2] = estpab(vec1,vec2);
h = estmutualinfo(p12,p1,p2);
其中 estpab這個function要先用mex()來進行編譯
因為那是c/c++的function
實際步驟是:
mex -setup
makeosmex
///////////////////makeosmex.m//////////////////
list = dir('*.cpp');
for i=1:length(list)
fprintf('building mex(dll) of %s\n',list(i).name);
mex(list(i).name);
end;
////////////////////////////////////////////////
makeosmex.m會利用 estpab.dll 這個檔案產生 estpab.cpp estpab.mexw64
而matlab就是使用estpab.mexw64
以上都還是在matlab裡面執行程式,且可以正常執行
而當我把mutualinfo.m檔案轉換成 .dll .h .cpp檔案
然後用VS2008 去呼叫 mutualinfo這個 function時就會出現下面的問題
undefined function 'estpab'......
因為estpab原本就是matlab 去呼叫c/c++,然後用mex()編譯的程式碼
所以當我要轉過去VS2008 C++ 使用時就出錯了
我有想說用.m檔的轉換方法,把estpab.mexw64也轉換成 .dll .cpp .h
然後用VS2008去呼叫,可以還是會出現錯誤
undefined function 'estpab'......
想請問各位 我這種情況該如何解決...
對matlab很不熟,又很急要解決這問題...
更簡單的來解釋我的問題的話
就是 有一個 mutualinfo.m檔 其中用到的function
是 呼叫c/c++的function(利用mex(dll))來產生estpab.mexw64檔案
使得matlab可以直接呼叫estpab.mexw64來執行 estpab();
那當我要把 mutualinfo.m轉成 .dll檔,讓VS2008 C++ 呼叫時
會出現 undefined function 'estpab'...
要如何解決這個undefined function的問題??
我主要就是要在VS2008 C++上執行程式,老師不給直接用matlab...
可以用呼叫的,很囧~"~
以下是matlab的function 載點,是open的source code

請點右上角下載
麻煩各位神人解救我 m(__)m
再次感謝!!!
作者: windg (風)   2014-12-13 11:27:00
你的estpab.mexw64的檔案放在哪個資料夾?這個error應該是說找不到檔案 可能要查一下你的路徑

Links booklink

Contact Us: admin [ a t ] ucptt.com