Разрабатывая приложения на Qt, во время развертывания продукта, приходится копировать все
Вот какая структура папки с продуктом в начале:
dll файлы, от которых он (продукт) зависит, в каталог с исполняемым файлом. Хорошо было бы создать папку и поместить туда все эти библиотеки. Используя механизм, так называемых частных сборок, можно добиться желаемого результата.
Вот какая структура папки с продуктом в начале:
downloads /
downloads.exe
downloads.ini
libgcc_s_dw2-1.dll
libstdc++-6.dll
mingwm10.dll
QtCore4.dll
QtGui4.dll
QtNetwork4.dll
Необходимо изменить её следующим образом:
downloads /
downloads.exe
downloads.ini
share /
libgcc_s_dw2-1.dll
libstdc++-6.dll
mingwm10.dll
QtCore4.dll
QtGui4.dll
QtNetwork4.dll
При таких изменениях приложение не запустится. Чтобы исправить ситуацию нужно создать два файла манифеста, а именно:
downloads /
downloads.exe
downloads.ini
downloads.exe.manifest
share /
libgcc_s_dw2-1.dll
libstdc++-6.dll
mingwm10.dll
QtCore4.dll
QtGui4.dll
QtNetwork4.dll
share.manifest
Содержимое файла downloads.exe.manifest:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='share' version='1.0.0.0' processorArchitecture='x86' />
</dependentAssembly>
</dependency>
</assembly>
Содержимое файла share.manifest:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <noInheritable/> <assemblyIdentity type="win32" name="share" version="1.0.0.0" processorArchitecture="x86" /> <file name="libgcc_s_dw2-1.dll" /> <file name="libstdc++-6.dll" /> <file name="mingwm10.dll" /> <file name="QtCore4.dll" /> <file name="QtGui4.dll" /> <file name="QtNetwork4.dll" /> </assembly>Удачи!
Комментариев нет:
Отправить комментарий