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のクラスや関数を普通に使える。