將vs2019創建的一個簡單的c++控制台項目和一個簡單的qt項目放到其他電腦上運行


使用vs2019創建了一個簡單的c++控制台項目,該程序就向控制台輸出一句“hello world!”

另一台無環境的win10計算機:原本只有Microsoft Visual C++ 2013 Redistributable(x64) 和Microsoft Visual C++ 2013 Redistributable(x86)兩個環境

 1.項目在debug x64運行環境下,設置項目屬性=》c/c++=》代碼生成=》運行庫=》MTd

  MTd模式用於debug模式下靜態鏈接庫的方式生成exe,這中方式生成的exe中已經包含了你的程序所需要的基本的vc++的基礎庫,用這中方式生成的debug文件夾直接拷貝到無環境的電腦上,exe文件點擊就可以直接運行。

  但是由於這種方式是使用的靜態鏈接庫的,我在配置了qt后,在用MTd的方式時,編譯報錯,原因時qt默認使用的動態鏈接庫,所以程序不能使用METd的方式編譯。如果想要使用MTd的方式,就需要自己用qt源碼編譯靜態庫的版本引入。

  也就是說MTd這種方式要求你所有引用的庫也是靜態庫,但是現在使用的別人的庫大多數時動態庫,所有可能會比較麻煩。

2.項目在debug x64運行環境下,設置項目屬性=》c/c++=》代碼生成=》運行庫=》MDd

  MDd模式用於debug模式下動態連接庫的方式生成exe文件,用這種方式生成的exe文件,需要在無環境的電腦上本身有你的程序中所需要的vc++所需要的庫。

  我將這種方式下生成的debug文件夾拷貝到無環境的電腦上,運行exe的時候報錯,找不到msvcp140d.dll、ucrtbased.dll、vcruntime140d.dll。

  然后我在vc2019創建項目的這台電腦上C:\Windows\System32路徑下找到了這三個dll,拷貝到了無環境的電腦上的debug文件夾下,成功運行了exe。

  這里有個坑,在C:\Windows\SysWOW64路徑下也能找到這三個dll,但是這個路徑下的dll時x86的,由於我的項目時x64的,所有需要C:\Windows\System32路徑下的dll。

3.項目在Release x64運行環境下,設置項目屬性=》c/c++=》代碼生成=》運行庫=》MD

  MD模式用與Release模式下動態鏈接庫的方式生成exe文件,同樣用這種方式生成的exe文件,需要在無環境的電腦上本身有你的程序中所需要的vc++所需要的庫。

  但是這里需要的dll和上面需要的那上個dll不同,上面的3個dll時debug版本的,這里需要release版本的,就是去掉最后那個d,也就是msvcp140.dll、ucrtbase.dll、vcruntime140.dll。

  同樣去C:\Windows\System32路徑下將這幾個dll拷貝過去應該也是可以使用的,但是我沒有這樣測試過。

  我使用的方式是去https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads下載了一個Microsoft Visual C++ 2015-2019 Redistributable(x64)的安裝文件:VC_redist.x64.exe。安裝完成后就就有了需要的環境,然后直接運行exe文件成功。

  注意這樣安裝后還有沒有debug需要的那幾個dll,可能這種安裝的環境僅僅支持release版本的exe。

4.還有一種是Release x64運行環境下,設置項目屬性=》c/c++=》代碼生成=》運行庫=》MT

  這種方式沒有測試,是Release版本的用靜態鏈接庫的方式生成exe文件。應該和第一種情況一樣直接拷貝生成的文件到無環境的計算機上就可以直接運行了。但是我這里沒有測試,應該差不多。

 

 

使用vs2019創建一個簡單的qt項目QtGuiApplication,我使用的qt版本是5.9,在vs2019種直接創建qt項目還需要一些提早的配置,這里就不想這些配置了。

上面說過了由於引入了qt所有這里不能使用靜態鏈接庫的生成方式,我這里使用的是:debug x64運行環境下,設置項目屬性=》c/c++=》代碼生成=》運行庫=》MDd

這里在生成的debug文件夾下面是沒有qt相關的dll的,這里如果引入qt相關的dll是關鍵。

在安裝完qt后可以找到下面這樣的運行程序:

有兩個上面那個是用vs創建qt程序的時候需要的,下面那個是用qt自帶的編輯器創建qt程序時候需要的。我這里是用的下面的這個。

點擊運行輸入以下命令:windeployqt  F:\20201123\package-test1\QtGuiApplication1\x64\Debug\QtGuiApplication1.exe

windeployqt是讓qt去尋找依賴的dll的命令,F:\20201123\package-test1\QtGuiApplication1\x64\Debug\QtGuiApplication1.exe則是我剛剛創建的qt項目生成的debug文件夾下面的exe文件的路徑。執行后在debug文件夾下面就自動添加了很多文件,這些就是我的qt程序所需要的。

然后將debug文件夾拷貝到無環境的計算機上,還需要拷貝msvcp140d.dll、ucrtbased.dll、vcruntime140d.dll這上個dll到文件夾種,就可以成功運行了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM