Qt軟體發布問題記錄

2021-08-10 19:37:32 字數 1244 閱讀 7271

最近在win7 + qt 5.5.1 + vs2012環境下軟體開發,開發好的軟體編譯release版本,用之前寫過的一篇帖子 《qt程式發布》方式將所需要的動態庫拷貝到一起,nsis指令碼打包成exe安裝程式,以為一切ok。當然在自己的機子上執行是沒有問題的,可是換到別的電腦上,可能就要報錯了。

1. 缺少 msvcr110.dll msvcp110.dll

眾所周知,這兩個是visual studio 2012的乙個動態鏈結庫,用vs2012開發的程式都需要這兩個動態庫,這個也是很好解決的,在電腦上找到它們,打包到一起就可以了。

2.應用程式無法正常啟動0xc000007b

網上推薦的方法是安裝directx 9.0c,但是安裝後還是不行?經過多次驗證,發現安裝vcredist_x86.exe可以解決這個問題。於是將這個exe打包到安裝程式中,在指令碼中檢查是否已安裝,如果沒有安裝則隨安裝程式執行時一起安裝。

nsis指令碼**:

;檢查vc執行環境

section vc_runtime

;檢查是否安裝vcredist_x86

call installvc

sectionend

;安裝vc執行環境

function installvc

push $r0

clearerrors

readregstr $r0 hklm "software\classes\installer\dependencies\" "version"

; 檢測含有vc的登錄檔資訊是否存在

iferrors 0 vsredistinstalled

execwait "$instdir\vcredist_x86.exe /q" ;若不存在,執行靜默安裝

delete "$instdir\vcredist_x86.exe" ;刪除檔案

vsredistinstalled:

exch $r0

delete "$instdir\vcredist_x86.exe" ;刪除檔案

functionend

指令碼中使用readregstr檢查hklm(hkey_local_machine)中指定路徑下項的version欄位,如果存在即表示已安裝,否則執行安裝。

vcredist_x86.exe在登錄檔中的項名稱應該是固定的。

之前也使用過readregdword,但這個方法每次讀出的結果都是失敗的,導致結果有誤,故後來換成readregstr。

Qt 格式轉換問題 記錄

用qt經常頭痛於一些格式不能通用的問題 在此記錄備用 1 20120112 qstring轉為char qstring str char a str hello word a str tolatin1 data 2 字串中輸入變數 char a 64 定義時直接分配空間 int temp 50 sp...

arcgis自動發布服務問題記錄

場景 體積過大的影像資料在分發,儲存,使用中很不方便,圖層過多的向量資料在顯示時可能會有些卡頓,因此在該平台裡以服務化的形式儲存該類資料,並在平台中管理起這些資料,如果要達成這個目的,手工一一發布資料不現實。解決方案 在這裡並不需要多大的工程,因此python的後台框架選擇了flask。服務的影像原...

Qt 格式轉換問題 記錄(好多方法)

用qt經常頭痛於一些格式不能通用的問題 在此記錄備用 1 20120112 qstring轉為char qstring str char a str hello word a str tolatin1 data 2 字串中輸入變數 char a 64 定義時直接分配空間 int temp 50 sp...