2011-10-23 52 views
2

我的工作在C跨平臺項目++,IOS和Android下,我有以下情況 :鏈接剝離未使用的類

我寫用來加載場景庫直接從XML文件中的圖表描述它們。該庫有一個基本的樹節點類,它實現了所有的功能,使它的名稱可以構造一個類。然後實現額外的樹節點,所有樹節點都來自這個基節點類。這工作很好,但有一個問題。鏈接器'認爲'我的一些課程不會被使用並將它們從圖書館中刪除。我現在有一個討厭的解決方法,擁有一個包含所有現有節點標題的文件,並且在該文件中創建並更改了每個節點的一個實例,以指示該類正在被使用的編譯器/鏈接器。

有沒有人知道一個好的設計模式,可以用來自動生成所有類的必需實例?

我試圖創建放入類cpp文件的宏,該文件創建給定類的靜態實例,但鏈接程序仍檢測到這些靜態實例永遠不會被引用。

還是有一個鏈接器標誌,可以用來告訴鏈接器不剝去任何未使用的類?就像已經提到的:我正在使用Android(ndk 6.0)和IOS(xcode 4.2)

這個問題不會成爲我的項目的展示者,但它真的很好找到一個可接受的解決方案。

回答

0

它是執行定義的,是否在main的第一條語句之前動態初始化帶有靜態存儲器的非局部變量 持續時間。如果初始化被推遲到main的第一個語句後的某個時間點 ,它應該在與初始化變量相同的翻譯單元中定義的任何函數或變量 的第一個odr-use(3.2)之前出現。

因此,沒有標準的方法來保證這些對象的構建,而是將它們全部列在一個特定的地方。