我在C中創建了一個.dll文件,其中有函數通過調用其地址來更改變量。我有使用某些功能的用C一段代碼:在matlab中調用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這個代碼,我fiqured這應該工作完全一樣:
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?爲什麼沒有針對其他值的指針? – chappjc