2012-09-01 601 views
5

我正在開發一個Windows遊戲,需要很多小的不同圖像,我把它放在resources.qrc中,它們在tot中。 14MB。Qt編譯錯誤:「內存不足分配134mb」「cc1plus.exe未找到」

當我嘗試編譯唯一的錯誤是:「內存分配134mb」「cc1plus.exe未找到」。

我該如何處理? 非常感謝。

+0

@fritzone謝謝您的回答,我不知道如何加載我的文件,而無需QRC,因爲我一直用它。你能給我一個鏈接或一些代碼來做到這一點?非常感謝你。 –

回答

7

不要將它們放在qrc中,將它們作爲單獨的資源(或每個圖像的新qrc文件),並在應用程序啓動時加載它們。 Qt生成一個qrc_XXXXX.cpp文件,它有效地將二進制數據以所有資源的字符數組形式插入到資源文件XXXXXX中(對於14MB的圖像,即:14680064字節(寫爲hex( 0xXX)字節放到1個文件中......它會很大!),極有可能是可憐的編譯器只是在他們身上咳嗽......

3

那麼,這個問題也有。但在我的情況下,所有資源.exe是必要的。

這個錯誤後,我購買額外的RAM(項目是非常重要的),然後我的RAM成了12 GB(6 GB)。

但我很驚訝,當錯誤沒有dissaperared :)後最後,我找到了答案there。問題是cc1plus.exe可執行內存限制。因此,在Qt中的情況下,這個問題可以在這個步驟解決(適用於Windows 7,MINGW32 4.9.2,別人可能只需要更改路徑):

  1. 如果你的操作系統是32位,然後在CMD( as Admin)put bcdedit /set IncreaseUserVa 3072
  2. Install masm32;
  3. open cmd(as admin too);
  4. cd C:\Qt\Tools\mingw492_32\libexec\gcc\i686-w64-mingw32\4.9.2
  5. C:\masm32\bin\editbin.exe /LARGEADDRESSAWARE cc1plus.exe

這就是全部。希望這會有所幫助:)

+0

謝謝,花了我很長時間才意識到,你需要editbin.exe在win32可執行文件上設置largeaddressaware標誌。 – DanC225