matlab如何调用dll文件

网载代码包运行候提示未定义与 'uint8' 类型输入参数相应函数‘vgg’代码包面vgg.dllvgg.cxxvgg.mexglx三文件才能用三文件vgg.m呢

第1个回答  2020-05-30
在Matlab的Help中搜索"Calling
Functions
in
Shared
Libraries"即可看到关于此内容的帮助文档。
下面以一个简单的小例子演示Matlab调用DLL的过程:
1、编译器准备
在Matlab的命令窗口输入:mex
-setup
选择你的编译器,我的是:
[2]
Microsoft
Visual
C++
2008
SP1
in
c:\Program
Files\Microsoft
Visual
Studio
9.0
2、编写你自己的DLL
在Visual
Studio
2008中新建一个Win32的Dll工程,不妨设名字为MatlabDllTest
编辑MatlabDllTest.cpp:
#include
"MatlabDllTest.h"
double
add(double
x,
double
y)
{
return
(x+y);
}
编辑MatlabDllTest.h:
#ifndef
MATLABDLLTEST_H
#define
MATLABDLLTEST_H
#ifdef
__cplusplus
extern
"C"
{
#endif
__declspec(dllexport)
double
add(double
x,
double
y);
#ifdef
__cplusplus
}
#endif
#endif
3、加载DLL:把编译连接之后产生的MatlabDllTest.dll和MatlabDllTest.h文件拷贝到Matlab的当前工作目录下,输入
loadlibrary('MatlabDllTest','MatlabDllTest.h');
(一定要有这步,如果dll不成功,会显示错误原因)
4、查看DLL中导出的函数
libfunctions
MatlabDllTest
-full
-full选项会列出导出函数的详细输入和输出参数,这是输出信息如下:
Functions
in
library
MatlabDllTest:
double
add(double,
double)
5、调用函数
calllib('MatlabDllTest',
'add',
1.3,
4.6)
此时就会输出正确的结果
ans
=
5.9000
总结:这个例子比较简单,只是为了演示整个过程,如果真的用到了Matlab来调用外部DLL的这种方式的话,就要注意DLL工程要符合Matlab的要求,详细信息请自己查看Matlab的帮助文件。
相似回答