作者moandmo726 (Lance)
看板MATLAB
标题[问题] c++呼叫matlab function(dll)
时间Mon Dec 8 22:52:27 2014
如果有违反板规麻烦告知我,我自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
再次感谢!!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 120.113.185.111
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/MATLAB/M.1418050353.A.184.html
1F:推 windg: 你的estpab.mexw64的档案放在哪个资料夹? 12/13 11:27
2F:→ windg: 这个error应该是说找不到档案 可能要查一下你的路径 12/13 11:28
3F:推 vn503024: 请问我遇到错误lnk 1181该怎办 02/16 21:47