C代码存储在DLL中。我可以使用loadlibrary函数在MATLAB中加载DLL。我无法将wchar_t * []参数传递给函数。我不知道如何在MATLAB中创建这种数据类型。有谁知道如何创建这种类型以传递给calllib函数?
MATLAB代码:
loadlibrary('test.dll', 'test.h');
str = '0';
ptr = libpoiner('voidPtrPtr', [int8(str) 0])
calllib('test.dll', 'testFunction', ptr) %this parameter does not match the wchar*[] type
outVal = ptr.Value
C代码:
void testFunction(wchar_t* str[])
{
str[0] = L"test";
}
输出:
MATLAB允许该功能完成。 outVal变量用垃圾值填充。
答案 0 :(得分:0)
如果您能够修改C头文件,可以尝试以下操作:
调整头文件以将所有wchar_t *转换为无符号短*。
在MATLAB方面,相应的类型将是一个uint16数组。
然后您可以将uint16数组强制转换为char。
答案 1 :(得分:0)
我明白了。我将MATLAB代码更改为以下内容:
loadlibrary('test.dll', 'test.h');
str = '0';
ptr = libpoiner('voidPtrPtr', [uint16(str) 0])
calllib('test.dll', 'testFunction', ptr) %this parameter does not match the wchar*[] type
outVal = ptr.Value
expectedOutput = char(outVal); %convert to ASCII
它输出十进制的值让我困惑。当我将它们转换为ASCII时,一切都有意义。