2012-09-01 18 views
5

Tôi đang phát triển trò chơi cửa sổ cần nhiều hình ảnh nhỏ khác nhau, tôi đặt vào resources.qrc, chúng ở dạng tot. 14mb.Lỗi biên dịch Qt: "hết bộ nhớ cấp 134mb" "cc1plus.exe không tìm thấy"

Khi tôi cố gắng biên dịch lỗi duy nhất là: "hết bộ nhớ cấp phát 134mb" "cc1plus.exe không tìm thấy".

Tôi làm cách nào để xử lý việc này? Cảm ơn bạn rất nhiều.

+0

@fritzone Cám ơn câu trả lời của bạn, tôi không biết làm thế nào để tải các tập tin của tôi mà không QRC, vì tôi luôn luôn sử dụng nó. Bạn có thể vui lòng cho tôi một liên kết hoặc một số mã để làm điều đó không? Cảm ơn nhiều. –

Trả lời

7

Không đặt chúng trong qrc, lưu giữ chúng dưới dạng tài nguyên cá nhân (hoặc tệp qrc mới cho từng hình ảnh) và chỉ tải chúng khi khởi động ứng dụng. Qt tạo một tệp qrc_XXXXX.cpp, nơi nó chèn dữ liệu nhị phân dưới dạng mảng char của TẤT CẢ tài nguyên của bạn trong tệp tài nguyênXXXXX trong tệp này (có, MỘT mảng cho hình ảnh 14MB của bạn, tức là: 14680064 byte (được viết dưới dạng hex (0xXX) byte thành 1 tệp ... nó sẽ lớn!), Trình biên dịch có khả năng rất kém chỉ ho trên chúng ...

3

Vâng, cũng có vấn đề này. Nhưng trong trường hợp của tôi, hãy đặt tất cả tài nguyên vào .exe là cần thiết

Sau khi lỗi này. tôi mua thêm RAM (dự án là rất quan trọng) và sau đó RAM của tôi đã trở thành 12 GB (từ 6 GB).

Nhưng tôi đã rất ngạc nhiên khi lỗi đã không dissaperared :) Sau một số googling, cuối cùng, tôi tìm thấy câu trả lời there. Vấn đề là cc1plus.exe giới hạn bộ nhớ thực thi. Vì vậy, trong trường hợp của Qt vấn đề này có thể được giải quyết trong bước này (đối với Windows 7, MinGW32 4.9.2, cho những người khác có lẽ chỉ đơn giản là cần phải thay đổi đường dẫn):

  1. Nếu hệ điều hành của bạn là 32bit, sau đó trong cmd (dưới dạng Quản trị viên) đặt bcdedit /set IncreaseUserVa 3072
  2. Cài đặt masm32;
  3. mở cmd (với tư cách quản trị viên);
  4. đặt cd C:\Qt\Tools\mingw492_32\libexec\gcc\i686-w64-mingw32\4.9.2
  5. đặt C:\masm32\bin\editbin.exe /LARGEADDRESSAWARE cc1plus.exe

Đó là tất cả. Hy vọng nó sẽ rất hữu ích :)

+0

Cảm ơn, đã cho tôi một thời gian dài để nhận ra, bạn cần editbin.exe để thiết lập cờ largeaddressaware trên một thực thi win32. – DanC225

Các vấn đề liên quan