VC++6.0でDLLロードにLoadLibrary APIを使う先日のエントリの続き。LoadLibrary APIを使用した、明示的なDLLのロード。
LoadLibrary APIを使う方法はGetProcAddressで関数ポインタを取得する必要がある。慣れていないと、この処理で少し手間取るだろう。Free処理も忘れずに。
hello.exe
hello.cpp
#include
#include
#include "Hellodll.h"
void main()
{
HINSTANCE hDll;
const char* (*Hello)(void);
hDll = LoadLibraryEx( "hellodll", NULL, 0 );
if ( hDll == NULL ) {
fprintf( stdout, "Can't load the DLL !!!\n" );
exit(1);
}
Hello = (const char*(*)(void))GetProcAddress( hDll, "Hello" );
if ( Hello == NULL ) {
fprintf( stdout, "Hello function not in hellodll.dll !!!\n" ) ;
exit(1);
}
printf("%s", Hello());
FreeLibrary(hDll);
}
hellodll.dll
hellodll.cpp
#include "Hellodll.h"
extern "C" int APIENTRY DllMain(HINSTANCE hInst, DWORD dwReason, LPVOID lpRsv)
{
return TRUE;
}
HELLODLL_API const char* __stdcall Hello()
(1/2) 次»
コメント(0)|コメントを書く
カテゴリー一覧
最近のコメント
プロフィール
このブログを友達に教える