함수 포인터 질문드립니다.
글쓴이: rladmsfhr / 작성시간: 수, 2013/11/13 - 11:47오전
DLL파일을 LoadLibrary()까진 성공해서 이 DLL파일안에
ReadSerialNumberDLL()이란 함수를 사용하고 있는데요.
이 함수가 간혹 아무이유없이 실패했다고 FALSE를 리턴해주네요;;
그래서 LoadLibrary는 잘돼서 함수가 잘못됐다고 보기엔 힘들지만 일단
함수가 제대로 할당됐는지 함수주소값을 출력해볼려고합니다.
// .header
typedef BOOL (WINAPI *ReadSerialNumberDLL)( CHAR * , CHAR )
//.cpp
ReadSerialNumberDLL ReadSerialNumber;
이렇게 선언되어있구요
printf("ReadSerialNumber : %x , &ReadSerialNumber : %x", ReadSerialNumber, &ReadSerialNumber);
서론이 좀길었네요 -_-;위에 문제에 대해 혹시 좋은 해결방법이 있나 여쭤보고싶어서 주저리 말했구요..
이렇게 출력하게끔 했는데 ReadSerialNumber,&ReadSerialNumber 두개의 차이점은 뭔가요?
Forums:
후자는 그닥 의미가..
후자는 의미상으로 보면 그냥 자동변수의 주소를 출력하는 것입니다. 즉, int a = 0 이런 변수 선언뒤 &a를 찍는것과 같지요. 결국 필요한건 해당 변수의 값, 그리고 그 값이 주소로서 가리키는 곳의 데이터(포인터형일경우)겠네요.
그리고 저라면 그냥 디버거 붙여서 해당 함수 호출시 무슨 일이 일어나는지 들여다볼것 같네요. 만약 해당 라이브러리 소스가 없고 바이너리 분석이 여의치 않다면 제작자에게 문의해야 될듯.
--
답변감사합니다.
즉 &ReadSerialNumber은 필요없다는 말씀이시죠?
그리고 라이브러리 소스가 없습니다...ㅠㅠ 좋은말씀 감사합니다
댓글 달기