답변 감사합니다.
MY_FUNC_testDLL testDLL=(MY_FUNC_testDLL)::GetProcAddress(dll,"testDll"); 에서...
:: (전역스코프 연산자) 를 빼야 맞는것이 아닌지요?
캐스팅이면... 아래처럼 해야 맞는것이 아닌가 해서요...
MY_FUNC_testDLL testDLL=(MY_FUNC_testDLL)GetProcAddress(dll,"testDll");
혹시... DLL내의 export된 함수들의 list를 알아낼 수 있는 방법이 있을까요?
(저는 지금 남이 배포한 DLL 속의 함수를, C++ builder에서 호출해 보려하는데...
아직 저는 , 그 DLL 속에 어떤 함수들이 정의 되어 있는지... 알수가 없어서요 )
답변 다시 한번 감사 드림니다.
수고하세요...
BloodWolf 님이 쓰신 글 :
: DLL에 export 되어 있는 함수에 맞는 함수 포인터 타입을 정의하시고,
: GetProcAddress() 함수로부터 원하는 함수의 포인터는 반환 받으시면 됩니다.
:
:
: typedef int (*MY_FUNC_testDLL)(char*);
:
: void __fastcall TForm1:: Button1Click ( TObject * Sender )
: {
: HINSTANCE dll;
: dll = LoadLibraryEx ("my.dll" , NULL, LOAD_LIBRARY_AS_DATAFILE );
: if ( dll != NULL)
: {
: ShowMessage ( "dll loaded..." );
: MY_FUNC_testDLL testDLL=(MY_FUNC_testDLL)::GetProcAddress(dll,"testDll");
: //...
: }
: }
:
:
: 참고) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/using_run_time_dynamic_linking.asp
|