1

静的変数を含むcppファイル(ヘッダーファイルはないはずです)がたくさんあります。これらの静的変数は、私のVisual Studio 2008コンパイラでは無視されているようです-どうすれば修正できますか?

詳細:

  • 静的フィールドallInstancesを持つ抽象クラスがあります。私のクラスの「具体的な」インスタンスが構築されると(cppファイルにある静的変数がインスタンス化されるときに発生します)、それへのポインターがallInstancesにプッシュバックされます。
  • Cppファイルには、私の抽象クラスから派生したクラスが含まれています。それらの実装は、allInstancesを介してのみ呼び出されることを意図しているため、cppファイルにとどまる必要があります。
  • 私の抽象クラスcppファイルは、静的ライブラリでコンパイルされるフォルダー(プロジェクト)にあります。
  • この静的ライブラリは、xllをコンパイルするプロジェクトによって使用されます

cppファイルがxllプロジェクトにあるときは、すべて問題ありませんでした。しかし、cppファイルを別のフォルダーに移動すると(Excelが唯一のインターフェイスではないため、実行する必要があります)、静的変数はインスタンス化されなくなりました。

私はこれらのcppファイルをたくさん持っており、それらすべてをxll、exe、pyd、dllなどの各プロジェクトに含めるのは良いことではありません。

何か案は?よろしくお願いします。

4

1 に答える 1

3

対応するオブジェクトファイルがプログラムの一部であることをリンカに通知する必要があります。通常、これは、ライブラリに配置するのではなく、オブジェクトファイルとして指定することによって行われます。定義上、ライブラリ内のオブジェクトファイルは、外部参照を解決する場合にのみプログラムの一部になります。

于 2012-05-25T15:50:59.590 に答える