簡體   English   中英

如何在C ++中創建獨立的可執行程序?

[英]How to create a Standalone Executable program in C++?

我想創建一個在沒有源代碼的情況下可以在任何計算機上運行的程序,那怎么可能? 如果我在程序中使用OpenGL,這有什么區別嗎?

如果不提供要編譯的源代碼,就無法在任何計算機上可以用C ++編寫程序。

例如,您也許可以使用C ++語言編寫程序,然后對其進行編譯並構建一個可在Windows x86-64上運行的可執行文件,但是該可執行文件在Linux(或MacOSX)上將不起作用,而在ARM(例如Android手機),除非您考慮使用模擬器

如果使用Visual C ++開發代碼,則可能需要考慮兩個選項:

  1. 確保您靜態鏈接所有庫。
  2. 將與您使用的Visual C ++版本相對應的程序Microsoft Visual C ++ Redistributable Package與目標計算機一起安裝在目標計算機上,例如http://www.microsoft.com/download/en/details.aspx?id=5555上的版本 一些生成安裝程序的軟件會自動為您安裝。

通常,您會將目標文件與某種平台相關的加載器鏈接。 該加載器加載您的對象並執行所有操作以從內存啟動它。 通常,您可以告訴編譯器鏈接目標文件並編譯blob。 OpenGL是一個功能強大的API,通常以動態鏈接庫的形式分發,並在運行時鏈接到您的程序。 如果我記得您,只需要確保dll在您想要的位置,然后從開始就將dll加載到程序中即可。

您的C ++程序在運行之前已編譯並鏈接到可執行文件中。 您應該能夠在包含項目的文件夾的“ Debug或“ Release子文件夾中找到該可執行文件。

如果您不使用GLUT或類似的庫,則OpenGL應該隨Windows一起提供,不會造成任何其他問題。 如果您確實使用GLUT,則將.dll文件與應用程序捆綁在一起就足夠了。

無論如何,都不需要源代碼。

我想創建一個在沒有源代碼的情況下可以在任何計算機上運行的程序,那怎么可能? 如果我在程序中使用OpenGL,這有什么區別嗎?

通過編譯並將其鏈接為可執行文件。 只要您不使用某些解釋語言(如Python,Ruby或類似語言),就不可避免地會為您提供可執行文件。 您可能/將遇到的最大問題是對庫的依賴。 但是,這些鏈接也鏈接到二進制文件中。 因此,您將要發行的只是一個.exe; 還有一些.dll。 通常,您會將其包裝在安裝程序包中,以部署到最終用戶。 安裝程序是使用“ NullSoft安裝程序系統”(NSIS)之類的東西創建的。

OpenGL本身只是系統庫提供的API。 因此,您不隨程序一起提供OpenGL,而是希望用戶將其安裝在系統上(如果安裝了圖形驅動程序,情況就是這樣)。

暫無
暫無

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

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