0
我有一个设备,我想从Matlab内控制WinXP32。它的API封装在一个带有关联C头的DLL中。在Matlab中使用DLL处理DLL
设备的API函数依赖于硬件描述符,该描述符由Win32句柄访问,只能由API函数直接操作。从由制造商提供的“foo.h中”报头:
typedef HANDLE BAR
#ifdef _DLL_EXPORT
#define _DLL_API __declspec(dllexport)
#else
#define _DLL_API __declspec(dllimport)
#endif
然后,该手柄用于由API函数,的C-签名是以下形式:
FOO_RETURN Device_Init(BAR *pbar, DWORD parameter1, ....)
移动到MATLAB中,我加载库:
loadlibrary('foo','foo.h');
和API函数现在可在Matlab中使用。在libfunctionsview,他们的签名是这样的:
Name Arguments
Device_Init (voidPtr, uint32, ....)
,并通过调用LoadLibrary创作的 “foo.m” 功能,它们描述为:
fcns.name{fcnNum}='Device_Init'; fcns.calltype{fcnNum}='stdcall'; fcns.LHS{fcnNum}="uint32'; fcns.RHS{fcnNum}={'errorPtr, 'uint32', ...)
我的问题是这样的句柄 “BAR”。下面没有被接受:
pbar = libpointer('BAR'); % Type was not found
pbar = libstruct('BAR'); % Undefined function or variable 'lib.BAR'
pbar = libpointer; % Segfaults when passed to DLL
有没有一种方法来创建和管理在Matlab这个句柄“BAR”,以便它可以在Matlab使用调用calllib(“富”,“命令”,PBAR ,....)?