我有一個跨平臺庫,只有在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