成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解析 Qt 程序在Windows 下發布

移動開發
本文介紹的是解析 Qt 程序在Windows 下發布,先來看內容。

Qt 程序在Windows 發布是本文要介紹的內容,不多說了,先來看內容,針對這個問題,其實 Qt 的 manual 中解釋的已經比較清楚了。下面是我根據自己的理解和實驗后寫的東西,希望比Qt文檔容易理解一點。

下面不涉及靜態編譯(靜態編譯可以看看這兒),只包含動態編譯(也就是Qt默認的情況),主要又分 mingw 和 msvc 兩種情況:

  1. Mingw 

首先,我們需要生成 release 模式的可執行程序(不少同學抱怨,一個小小程序卻需要100多M的動態庫,就是因為用的debug)

  1. qmake  
  2. mingw32-make release 

而后將 可執行文件 與 需要的動態庫放到同一個文件夾下,一般需要

  1. myprogram.exe   
  2. mingwm10.dll   
  3. libgcc_s_dw2-1.dll   
  4. qtcore4.dll   
  5. qtgui4.dll  

有同學抱怨,動態庫拷過去以后,程序報錯 無法定位程序輸入點于動態鏈接庫QtCore4.dll上 ,這一般是由于系統中裝了多套Qt的運行庫,而你拷貝的不是Qt安裝目錄下的庫所導致的。比如,當安裝的是Qt SDK時,很容易導致這個問題,因為里面的Qt是mingw編譯的,但里面的QtCreator是msvc編譯的,所以不少人不小心就吧QtCreator帶的Qt運行庫拷過來了。

如果你不需要其他的插件,那么就可以發布程序了,然而不少同學抱怨 jpg、gif、bmp 等格式的圖片無法顯示,這是因為 Qt 原生支持 png,而其他格式需要通過插件支持(插件在 %QTDIR%/plugins\imageformats 目錄下)

你只需將需要的插件拷貝到可執行程序所在的目錄下的 imageformats 目錄下即可

  1. myprogram.exe   
  2. imageformats\qjpeg4.dll   
  3. imageformats\qgif4.dll  

同樣,如果你的程序需要gb2312、gbk編碼支持,那么需要將 %QTDIR%\plugins\codecs 目錄下的相應插件拷貝到可執行程序所在目錄下的 codecs 目錄下

  1. myprogram.exe   
  2. codecs\qcncodecs4.dll  

建議:不妨多看看Qt安裝目錄下的plugins目錄,熟悉這些插件分別是做什么的,你發布的程序需要哪些。

現在,程序可以發布了。你現在也可以通過 nsis 來制作一個安裝包。

  1. msvc 

如果用的VS2008 而不是mingw,發布的過程其實基本是一樣的。

首先生成 release 模式的 可執行文件

  1. qmake  
  2. nmake release 

而后準備需要的動態庫與插件

  1. myprogram.exe   
  2. qtcore4.dll   
  3. qtgui4.dll   
  4. imageformats\*4.dll  


 因為是vc編譯的,所以不需要mingw的 mingwm10.dll libgcc_s_dw2-1.dll ,取代他們的是VC2008的C\C++ 運行庫:

  1. MSVCR90.DLL   
  2. MSVCP90.DLL  

如果你用的Windows xp 之前的系統,那么只要將這兩個運行庫和可執行程序放于同一個目錄即可。

但對于Windows xp (包括)之后的系統,這樣做并不會正常工作,程序會報告:由于應用程序配置不正確,應用程序未能啟動。這個問題有點復雜,其實解決方法很簡單,只需在用戶機器上安裝1M多的VS2008可再發行包 vcredist_x86.exe 即可

該包會將運行庫安裝到 window系統目錄下的 WinSxS 目錄下,對xp之前的系統,還會將運行庫同時安裝到path路徑下的目錄內。其實如果用戶裝過其他人編寫的VC2008的程序,機器上很應該已經裝過該包了。
或許你要問,如果不想安裝 可再發行包怎么辦,比如就想把需要dll一塊和程序打包,我們可以這么做:

將文件夾 (如果你用的VS2008 express,該文件夾不存在)

  1. <Visual Studio Install Path>\VC\redist\<Architecture>\Microsoft.VC90.CRT 

直接復制到可執行程序所在目錄

  1. myprogram.exe   
  2. Microsoft.VC90.CRT\*  

注意:

(1)如果用戶機器上已經安裝了可再發行包,程序將永遠不會使用Microsoft.VC90.CRT下的庫。

(2)當采用這種方法時,如果同時發布插件(包括圖片插件等),那么插件編譯時必須:

  1. CONFIG-=embed_manifest_dll 

使得生成的插件中不嵌入manifest文件,否則插件不被程序識別(其實也可以識別,只要將 Microsoft.VC90.CRT 拷貝一份和插件放到同一文件夾即可,當然這種方式很不好,如果插件分布在幾個目錄下,要放置Microsoft.VC90.CRT的很多副本)。

工具

1. 一定要記?。?Dependency Walker 是你的好幫手,它會告訴你你的 exe 和 dll需要哪些庫,以及它加載的動態庫都在哪個文件夾內 等

解析 Qt 程序在Windows 下發

2. 最好準備一個進程查看的工具,比如微軟的 Process Explorer等,來查看你的程序到底加載了哪些動態庫(加載了哪些插件等)

1937241057

小結:關于解析 Qt 程序在Windows 下發布的內容介紹完了,希望本文對你有所幫助。

責任編輯:zhaolei 來源: 互聯網
相關推薦

2009-06-12 17:25:41

JBoss發布Web程

2011-06-29 11:22:06

Qt Windows 入口函數

2011-06-23 15:32:05

Qt Windows消息

2011-06-09 09:12:12

QT symbian

2011-06-24 13:38:32

QT 編譯 安裝

2011-06-28 10:38:52

QT 文件

2011-06-16 10:09:25

QT Windows DLL

2011-06-30 10:50:39

Qt OpenCV

2011-06-22 14:30:44

QT 多線程 線程

2012-04-09 23:18:40

松下

2019-04-25 07:40:40

Windows操作系統功能

2012-12-25 09:52:22

Windows 8

2021-12-02 15:12:01

Twitter隱私信息泄露

2011-08-09 17:36:34

Xcode 4App

2011-09-09 17:59:26

QT Widget

2011-07-01 15:04:49

Qt 內省

2011-06-08 15:27:24

QT QT 4.5 編譯

2011-06-09 15:18:07

QT 編譯

2011-03-23 15:58:50

全局熱鍵QtWindows

2014-07-21 08:53:16

Qt Creator
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99re视频 | 午夜免费小视频 | 在线视频久久 | 亚洲欧美视频 | 久久久久久久一区 | 欧美性生活网 | 久久久久亚洲精品 | 精品国产黄色片 | 中文字幕在线免费观看 | 国产一区黄色 | 亚洲男人天堂2024 | 亚洲二区精品 | 色视频在线免费观看 | 国产欧美日韩精品在线观看 | 久久国产精品一区二区三区 | 2022精品国偷自产免费观看 | 久久久精品天堂 | 国产 欧美 日韩 一区 | 国产精品成人一区二区三区夜夜夜 | 欧美在线一区二区三区 | 欧美一区二区综合 | 久草综合在线 | 一级做a爰片性色毛片16美国 | 一级片视频免费观看 | 日本不卡免费新一二三区 | 婷婷桃色网 | 成人精品鲁一区一区二区 | 欧洲视频一区 | 四虎在线视频 | 伊人爽| 国产福利在线免费观看 | 一区二区三区在线观看免费视频 | 一区二区三区视频在线观看 | 超碰成人免费观看 | 蜜桃视频麻豆 | 久久久久久亚洲精品 | 玖玖精品| 91资源在线观看 | 日韩免费成人av | 国产综合精品一区二区三区 | 久久精品91久久久久久再现 |