我正在尝试使用gcc工具(使用RTOS)将c ++应用程序移植到arm板上。 但是我的静态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。
存在多个问题:
由于
答案 0 :(得分:1)
您很可能忘记使用collect2
或GNU linker。参见:
答案 1 :(得分:0)
要使用gcc和RTOS,你应该有“ld”脚本, 它描述了将内容放在内存中的位置,例如可以描述如何 处理全局构造函数的代码。
关于建设者的召唤。您可以查看eCos的源代码:
http://ecos.sourceware.org/
对于arm架构,您可以在packages / hal / arm / arch / current / src目录中查看vectors.S和hal_misc.c。 vector.S包含类似的内容:
bl cyg_hal_invoke_constructors
并在hal_mics.c中实现此函数。