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) 次»

パソコン・インターネット
2008/03/17




コメント(0)|コメントを書く

カテゴリー一覧
最近のコメント
プロフィール

このブログを友達に教える

コミュニティ | 有名人・芸能人ブログ | ケータイ占い | ケータイ小説 | 掲示板


画面TOP↑


powered by cocolog