我有一个跨平台库,只有在iPhone上有奇怪的问题,只有在释放。静态const初始化iPhone /发行
// .h
class cColor
{
public:
static const cColor Red;
static const cColor Green;
static const cColor Blue;
u8 r;
u8 g;
u8 b;
u8 a;
inline cColor(...) : ... { }
};
// .cpp
const cColor cColor::Red(0xFF, 0x00, 0x00);
const cColor cColor::Green(0x00, 0xFF, 0x00);
const cColor cColor::Blue(0x00, 0x00, 0xFF);
它看起来像一个初始化顺序失败,但问题不是静态方法,但后来在程序中。所有的cColor :: Red,Green,Blue都被设置为0.实际上,我在构造函数的{}中放置了一些printf,它不打印任何东西,但可能它没有问题,因为它在全局初始化过程中。现在最糟糕的部分是:库在Release中工作,直到最近我添加了几个函数(200-300行),甚至没有被执行的Objective-C代码。只是从代码大小切割我可以解决这个问题,但这不是我真正的选择。此外,应用程序不是那么大,内存不能成为问题。
Btw cColor包含在库中的预编译头文件中,后来在使用该库的应用程序中。
帮助!我真的没有想法。
编辑:下面是详细信息...
我只移动了初始化代码从图书馆到我的应用程序现在 常数得到正确初始化。
我真的认为链接器搞乱了一些东西。
任何想法?
有什么症状? – 2010-07-11 09:14:11
所有静态颜色的rgba值为0.缩进器工作得很好,除了e静态常量。 – Aleks 2010-07-11 18:23:14
通过删除足够多的*任意*代码或删除* Objective-C *代码,您现在可以再次运行它。 – 2010-07-11 22:34:47