Есть ли у Qt ограничения системы ресурсов? - PullRequest
3 голосов
/ 04 июня 2010

Мое приложение Qt зависит от запуска Oracle DLL. Поскольку он по большей части статически связан (за исключением этих библиотек DLL), я хотел бы встроить библиотеки DLL и EXE-файлы в средство запуска, которое будет вести себя как полностью статическое приложение (один exe-файл, без DLL-файлов).

Средство запуска извлекает включенные файлы во временный каталог, запускает программное обеспечение и очищает по завершении.

Я пытался встроить DLL-библиотеки EXE и Oracle (около 30 МБ) в средство запуска, используя систему ресурсов Qt, но компилятор (MSVC 2005) завершился неудачно с

фатальная ошибка C1001: в компиляторе произошла внутренняя ошибка.

Существует ли ограничение по размеру для ресурсов, включенных в систему ресурсов Qt (или я злоупотребляю им, включив такие большие файлы в мой исполняемый файл)?

Ответы [ 3 ]

1 голос
/ 10 июня 2010

Если разделение двоичного файла само по себе не удастся, то будет использоваться один файл ресурсов на фрагмент двоичного файла.

Таким образом, результирующий файл cpp будет намного меньше, и компилятор сможет его обработать.

Мне повезло с блоками по 10 МБ, так что получается 5 файлов ресурсов (один для неразделенных DLL и 4 для кусков большей DLL).

Просто не забудьте присоединиться к чанам перед использованием!

0 голосов
/ 04 июня 2010

Ресурсы Qt обрабатываются компилятором ресурсов, и файл .cpp генерируется для каждого файла .qrc. Я полагаю, ваш сгенерированный файл .cpp огромен (должен быть больше 30 МБ), и компилятор VC просто не может скомпилировать такой огромный исходный файл.

0 голосов
/ 04 июня 2010

Ограничение исходит от компилятора, так как ошибка говорит, что это ВНУТРЕННЯЯ ошибка компилятора. Таким образом, компилятор не может справиться с этим. Вы можете попытаться обойти это, разбив большие файлы на мелкие части и вручную соединив их в своем коде. Я не уверен, что это сработает, но стоит попробовать.

...