/* * link2.cpp * * # 明示的リンク */ #include // ユニークな関数型の定義 typedef int (*AVERAGE)(int,int); // DLLへの相対パス const char DLLPATH1[]="export1.dll"; const char DLLPATH2[]="export2.dll"; int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // DLLをロード HMODULE hDll1= ::LoadLibrary(DLLPATH1); HMODULE hDll2= ::LoadLibrary(DLLPATH2); // 関数アドレス取得 AVERAGE average1= (AVERAGE)::GetProcAddress(hDll1,"?average@@YAHHH@Z"); AVERAGE average2= (AVERAGE)::GetProcAddress(hDll2,(LPCTSTR)100); // 関数呼び出し int result1= average1(8456,562); int result2= average2(562,8456); // 結果表示ルーチン char buf[100]; ::wsprintf(buf,"result1= %d\r\nresult2= %d",result1,result2); ::MessageBox(NULL,buf,"二つのDLLで8456と562の平均を求める",MB_ICONEXCLAMATION); return 0; }