edtheprogrammerguy
は正しい。
クラスを適切に公開する方法の詳細は次のとおりです。
属性を前に付ける必要があります:
__declspec(dllexport)...
公開したいすべての機能。
これを参照してください。
C 関数の例:
__declspec(dllexport) int __cdecl Add(int a, int b)
{
return (a + b);
}
これは次のように簡略化できますMACROS
: すべてはこの役立つページで説明されています。
C++ クラスの場合、各クラスにプレフィックスを付けるだけで済みます (すべてのメソッドではありません)。
私は通常そのようにします:
注:以下も移植性を保証します...
インクルード ファイル:
// my_macros.h
//
// Stuffs required under Windoz to export classes properly
// from the shared library...
// USAGE :
// - Add "-DBUILD_LIB" to the compiler options
//
#ifdef __WIN32__
#ifdef BUILD_LIB
#define LIB_CLASS __declspec(dllexport)
#else
#define LIB_CLASS __declspec(dllimport)
#endif
#else
#define LIB_CLASS // Linux & other Unices : leave it blank !
#endif
使用法 :
#include "my_macros.h"
class LIB_CLASS MyClass {
}
次に、ビルドするには、次のようにします。
- オプション
-DBUILD_LIB
を通常のコンパイラ コマンド ラインに渡す
- オプション
-shared
を通常のリンカー コマンド ラインに渡す