私は、resources.qrcに入れた、たくさんの小さな異なる画像を必要とするWindowsゲームを開発しています。14MB。
コンパイルしようとすると、「134MBを割り当てているメモリが不足しています」「cc1plus.exeが見つかりません」というエラーのみが発生します。
どうすればこれを処理できますか?
Windows 7SP1 x86 4 GB RAM
Qt 5.7.0
Qtのリソースに大きなファイルを追加したときにも同じ問題が発生しました。エラーが発生しました:
cc1plus.exe:-1:エラー:1073745919バイトを割り当てるメモリが不足しています
解決:
ファイルに追加CONFIG += resources_big
し*.pro
ます。
私はここでそれを取りました:cc1plus.exe:メモリ不足| 60MBの暗号化されたリソースファイル
それらをqrcに配置せず、個別のリソース(または各イメージの新しいqrcファイル)として保持し、アプリケーションの起動時にロードするだけです。Qtはqrc_XXXXX.cppファイルを生成し、このファイルのリソースfileXXXXX内のすべてのリソースのchar配列の形式でバイナリデータを効果的に挿入します(はい、14MBのイメージに対して1つの配列、つまり:14680064バイト(hex( 0xXX)バイトを1つのファイルに...それは大きくなります!)、おそらく貧弱なコンパイラはそれらにただ咳をします...
まあ、私もこの問題を抱えていました。しかし、私の状況では、すべてのリソースを投入する.exe
必要がありました。
このエラーの後、追加のRAMを購入し(プロジェクトは非常に重要です)、RAMは12 GBになりました(6 GBから)。
しかし、エラーが消えなかったとき、私は非常に驚きました:)いくつかのグーグルの後、ついに、私はそこで答えを見つけました。問題はcc1plus.exe
実行可能メモリの制限です。したがって、Qtの場合、この問題は次の手順で解決できます(Windows 7の場合、MinGW32 4.9.2、その他の場合は、パスを変更するだけで済みます)。
bcdedit /set IncreaseUserVa 3072
cd C:\Qt\Tools\mingw492_32\libexec\gcc\i686-w64-mingw32\4.9.2
C:\masm32\bin\editbin.exe /LARGEADDRESSAWARE cc1plus.exe
それで全部です。
明らかなことも忘れないでください。メッセージが実際に真実であり、実際に十分なメモリがないか、メモリを必要とするプロセスで使用できるようにすることができません。
私のシステムには16GBのRAMがあり、小さなアプリケーションには十分なはずです。「それはおそらくそれではありえない。」私は思った...しかし私のマシンは数週間で再起動されていませんでした。
システムを再起動するだけで、このエラーを修正できます。