C에서 .dll을 만들었고 그 주소를 호출하여 변수를 변경하는 함수가 있습니다.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과 함께 변경된다 : I는 C의 기능 중 일부를 사용하여 코드의 부분을 가지고있다. 지금은 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의 주소에 액세스하는 다른 방법이 있습니까?
sn_buffer는'model_number_pointer.Value' 여전히 0 : 내가해야 할 일을했을 그 모든이 무엇입니까? 왜 다른 값에 대한 포인터가 없습니까? – chappjc