|
API나 기타 라이브러리의 함수를 부를 때에는
에러 처리는 기본입니다.
LoadLibrary를 호출할 경우에는 꼭 리턴값이 NULL인지 아닌지 체크하세요.
아래에서 MailDll이 NULL이면 dll화일을 못 찾았거나, 읽어들일 때 에러가
생긴 것이니, 그에 따른 처리를 해주어야겠죠.
참고하세요.
임양규 님이 쓰신 글 :
: 이곳에서 많은 도움을 받고 있는 초보자랍니다.
:
: 어렵게 LoadLibrary를 이용해서 컴파일에는 성공했는데, 실행하고 나서 [버튼]을 누르면,
:
: 이런 에러가 나옵니다...
:
: Project1.exe raised exception class EAccess Violation with message 'Access violation at address 00000000. Read of address 00000000'.
:
: 이런 에러는 어떤경우에 발생하나요???
:
:
: 참고로 제가 작성한 소스는 다음과 같습니다...
:
: 커맨드 버튼을 누르면 cryptAddRandom 함수를 호출한 후, 결과값을 화면에 보여주려고 합니다.
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: HINSTANCE MainDll;
: MainDll = LoadLibrary("c:\02072\cl32.dll");
: int (__stdcall* cryptAddRandom)(const void*, const int);
: cryptAddRandom = (int (__stdcall*)(const void*, const int))GetProcAddress(MainDll, "cryptAddRandom");
: int i=cryptAddRandom(NULL, 3);
: ShowMessage(IntToStr(i));
: FreeLibrary(MainDll);
:
: }
|