[问题] 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
http://ppt.cc/qIg2 请点右上角下载
麻烦各位神人解救我 m(__)m
再次感谢!!!
作者: windg (风)   2014-12-13 11:27:00
你的estpab.mexw64的档案放在哪个资料夹?这个error应该是说找不到档案 可能要查一下你的路径

Links booklink

Contact Us: admin [ a t ] ucptt.com