宣言してから、DLL で静的変数をインスタンス化します。
// DLL.h
class A
{
//...
};
static A* a;
// DLL.cpp
A* a = new A;
これまでのところ、とても良い...extern
ではなく使用するように提案されましたstatic
。
extern A* a; // in DLL.h
問題ありませんが、extern
変数はどこかで宣言する必要があります。Invalid storage class memberを取得しました。
つまり、私が慣れていたのは、次のようにソース ファイルで変数を宣言することでした。
// In src.cpp
A a;
次にextern
、同じプロジェクト内の別のソース ファイルで宣言します。
// In src2.cpp
extern A a;
したがって、リンク時に同じオブジェクトです。多分それは正しいことではありませんか?
では、extern になった変数をどこで宣言するのでしょうか。
dll が読み込まれるとすぐにインスタンス化された変数を確認するために、静的宣言を使用したことに注意してください。
の現在の使用はstatic
ほとんどの場合機能しますが、変数のインスタンス化で遅延などを観察すると思いますが、ロード時に常にインスタンス化する必要があります。この問題を 1 週間調査していますが、解決策が見つかりません。