VC++でのDLLの作り方
エクスポートする側(Dll)の関数に __declspec(dllexport) をつけて宣言する。
例)
__declspec(dllexport) void sum(int a, int b);
クラスをエクスポートする場合は、クラス宣言に __declspec(dllexport) をつけて宣言する。
例)
class __declspec MyClass {
:
}
※DEFファイル(拡張子.def)を使って宣言を明示する方法もあるが、こちらの方が簡便。
コンパイルして作成されたdllとlibファイルを、インポートするプロジェクトのディレクトリにコピーする。
インポートする側では、インポートする関数やクラスに、__declspec(dllimport)をつけて宣言する。
エクスポート側とインポート側でヘッダを共用した方がいいので、ヘッダを
#ifdef _EXPORTING #define CLASS_DECLSPEC __declspec(dllexport) #else #define CLASS_DECLSPEC __declspec(dllimport) #endif
と宣言しておき、エクスポートする側のcppファイルでは、
#define _EXPORTING #include "MyClass.h"
とインクルードし、
インポートする側では普通に、
#include "MuClass.h"
とすると便利。
使用するライブラリは、ワークスペースのリンクモジュールの設定で lib ファイルを追加するか、
#pragma comment(lib, "hogehoge.lib")
とする。
これで、dllのクラスや関数を普通に使える。