2

gcc ツール (RTOS を使用) で c++ アプリケーションをアームボードに移植しようとしています。しかし、私の static const コンストラクターは呼び出されていません。

簡単なコード:

class TestClass {
public:
    TestClass();
    TestClass(int m);
    TestClass(const TestClass& other);
    ~TestClass();
    int getM() const;
    const TestClass& operator = (const TestClass& other);
private:
    int m;    
};

class TestInitClass {
    static const TestClass TestClassObj;
};

const TestClass TestInitClass::TestClassObj = TestClass(5);

クラス定義を提供します。しかし、これを TestInitClass::TestClassObj.getM() で呼び出すと、0 が返されます。

複数の問題があります。

  1. 私の static const は .bss セクションに割り当てられています。.ctors セクションに入っていません (これはリンカー スクリプトの問題でしょうか?!)
  2. .ctors セクションに入ったとしても、これらのコンストラクターを呼び出すにはどうすればよいですか
  3. 静的 C++ ライブラリを使用する場合、それらをどのように呼び出す必要がありますか?

ありがとう

4

2 に答える 2

1

collect2またはGNU linkerを使用するのを忘れている可能性があります。見る:

于 2011-11-16T22:13:17.843 に答える