【发布时间】:2015-01-02 18:04:36
【问题描述】:
我在 C 中创建了一个 .dll,其中有一些函数可以通过调用变量的地址来更改变量。我有一段代码使用了 C 中的一些函数:
char logfile[1000] = "i.log";
bool bRet = OpenDevice(logfile);
//FindHardware
int model;
int *ptr = &model;
char name_buffer[1000], sn_buffer[1000];
FindHardware(ptr, name_buffer, 1000, sn_buffer, 1000);
printf("Hardware found: %s", name_buffer);
模型变量与 name_buffer 和 sn_buffer 一起更改。现在我正在尝试为 matlab 复制这段代码,我认为这应该完全一样:
header = 'header.h'; % url for header
dll = 'dll.dll'; % url for .dll
loadlibrary(dll, header);
logfile = 'i.log';
bRet = calllib('dll', 'OpenDevice', logfile);
model_number = 0;
% FindHardware
name_buffer = blanks(1000);
sn_buffer = blanks(1000);
model_number_pointer = libpointer('int32Ptr', model_number);
calllib('dll', 'FindHardware', model_number_pointer, name_buffer, 1000, sn_buffer, 1000);
但是没有任何变量被改变。我想这与我创建的指针有关,还有其他方法可以访问model_number的地址吗?
【问题讨论】:
-
你的意思是
model_number_pointer.Value还是0?为什么没有指向其他值的指针?
标签: c matlab pointers dll memory-address