私は MSVC++ 2010 で DLL を作成する経験があまりありません。学習曲線の一部として数回だけかもしれません。現時点では、約 10 の異なるクラスを含む非常に大きなファイルがあります。ファイルを複数のファイルに分割し、関連するクラスを同じファイルに移動する必要があります。そのため、先に進む前に、経験豊富な開発者から私の状況について知りたいと思っていました。
次のようなもの
// Header
namespace collections
{
classA
classB
ClassC
ClassD : ClassA,ClassB
}
// CPP
namespace collections
{
classA
{
// Implementations
}
// Rest of the classes
}
個別のファイルに分解した後
// ClassA.h
namespace Collections
{
ClassA
}
// ClassB.h
namespace Collections
{
ClassB
}
// Implentations etc
私の主な関心事は、dllexport/dllimport ストレージ クラス属性の使用です。ファイルが分割されるため、次を使用する必要があります。
#ifdef MAKEDLL
# define EXPORT __declspec(dllexport)
#else
# define EXPORT __declspec(dllimport)
#endif
それらをエクスポート/インポートするクラスに対して。しかし、これらの行を作成する各ヘッダーファイルに配置すると(1つの名前空間「コレクション」)、これはコンパイルまたはコード生成ステップで悪い意味を持ちますか?私はオンラインで周りを見回していて、特定のメンバーが再定義されているか、DLLの作成中に見つからないリンカーのエラー/警告について人々が最も不満を言うことを発見しました。これは、どちらがそれを行うのに最適かつ適切な方法であるかわからないということだけで、間違いなく解決された問題でなければなりません。最後に1つのDLLだけを作成する必要があります。複数のDLLを作成する必要はありません。
ガイダンスやヘルプをいただければ幸いです。ありがとうございました