最終更新:2017-12-12 (火) 18:31:40 (2338d)
Windows/開発/DLL
Visual Studio
- Win32アプリケーションウィザード?
DLL
DllMain
// dllmain.cpp : DLL アプリケーションのエントリ ポイントを定義します。 #include "stdafx.h" BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; }
C++
関数
- __declspec(dllexport)
- DLLの外に公開したい関数の定義の前に__declspec(dllexport)というキーワードをつける
__declspec(dllexport) int sub(int arg)
呼び出し側
リンク方法
明示的リンク
- LoadLibrary,GetProcAddress,FreeLibrary?を使う
暗黙的リンク
- アプリケーションをインポートライブラリ (.lib) ファイルとリンクする
インポートライブラリ
- sub.dll,sub.obj,sub.libのうちの.lib
- 暗黙的リンクによるDLLの使用方法を採用した場合に必要になる
- インポートライブラリには、DLL を読み込んで、DLL 内の関数呼び出しを実装するコードが含まれるだけ