簡體   English   中英

本機Windows C ++編程?

[英]Native windows c++ programming?

我對本機c ++以及其他人在Windows上進行編程有一個快速的問題-我最近在自己的計算機上用自己的計算機在Visual Studio中編寫了一個小型c ++程序,可以為我做一些數學運算。 我成功編譯了該文件,並將.exe從VS debug文件夾移至我的桌面。 無論.exe在哪里,它都可以在我的計算機上正常運行。 但是后來我把程序交給了我的朋友,當他試圖運行它時,它說他缺少各種dll文件。 現在我感覺這是因為VS中包含一個c ++環境,該環境允許它在我的而不是他的計算機上運行。 但是我的問題是,程序最初使用哪種語言,為什么應該很重要? 將其編譯為.exe來將代碼轉換為機器語言,以使其可以在任何計算機上運行,​​而不管它是否具有dev工具,這不是很重要嗎?

編譯調試版本將動態鏈接到Windows不附帶的dll文件的調試版本。 技術上/法律上也不允許您重新分發dll文件的調試版本。 要么編譯發行版本,要么將鏈接到的任何.dll文件都包含在exe文件中。 您可能還需要擔心目標計算機是否安裝了正確的Microsoft Visual Studio C ++可再發行程序包。

或者,您可以通過在項目屬性的“代碼生成”下設置“運行時庫”->“多線程/ MT”來進行靜態鏈接,從而繞過dll地獄,盡管出於各種原因(我不願贅述),人們通常對此並不滿意。

理論上講 ,Exe文件可以在具有合適CPU等的任何計算機上運行。
(與您的操作碼“語言”相同)。

實際上,存在兩個主要問題:

a)程序文件包含的內容不止CPU命令,其內容和方式還取決於您的操作系統。 Exe(PE)文件通常在Windows中使用,盡管從理論上講它是可能的,但是Linux不會運行它,因為沒有人以了解Exe文件的方式對其進行編程(有其他軟件,例如Wine, 可以在其上運行Exe。 Linux,但必須單獨安裝)

b)您並不是從頭開始編寫操作系統的所有內容,而是要依賴於可以使用許多預先存在的功能。 如您所知,這些必須存在才能運行程序。 問題是,Visual Studio假定存在庫,這些庫不是Windows本身的一部分。 將它們與每個Windows安裝一起交付並不是問題,但是Microsoft選擇將它們保留為單獨下載(注釋中提到的Redist。程序包)。 要在不依賴其他庫文件的情況下盡可能地在Exe文件中填充內容,請為您的項目使用靜態鏈接選項。

此問題與語言無關。 如果缺少依賴項/庫,什么都沒有,那肯定會大喊大叫。 它期望使用其他dll中的代碼來知道如何做某事。

一個很好的例子是當您運行一個.exe時說“嘿!”! 我們注意到您缺少此驅動程序/文件/依賴項,然后將您帶到其他一些單擊鏈接來獲取它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM