2010-06-04 4 views
3

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

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

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

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

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

ответ

0

Предел исходит от компилятора, так как ошибка говорит, что это ошибка компилятора INTERNAL. Поэтому компилятор не мог справиться с этим. Вы могли бы попытаться пройти его, разделив большие файлы на мелкие части и вручную соединить их в свой код. Я не уверен, что это сработает, но стоит попробовать.

+0

Я обязательно попробую! Спасибо за подсказку, я буду держать вас в курсе! – STL

0

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

1

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

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

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

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

Смежные вопросы