簡體   English   中英

Visual C ++ 2010和Native可執行文件

[英]Visual C++ 2010 and Native executable file

本機exe! 這意味着我的程序可以輕松運行而無需任何要求? 即使我使用.net類?

你知道我想編寫一個如此輕松的程序,我不喜歡使用C#或任何其他.net編程語言,因為它們都需要.net-framework 4.5。

試想2.5 MB的程序需要+250 MB .netframework。

最新消息 - 12/01/2016:

差不多4年前,當我問這個問題時。 如您所知, Dotnet Native已經宣布。 這是一個將IL編譯為本機代碼的有趣功能。

使用.NET Native編譯應用程序

.NET Native是一種用於構建和部署Visual Studio 2015附帶的Windows應用程序的預編譯技術。它自動編譯以托管代碼(C#或Visual Basic)編寫並以.NET Framework和Windows為目標的應用程序的發行版本10到本機代碼。 通常,以.NET Framework為目標的應用程序將編譯為中間語言(IL)。 在運行時,實時(JIT)編譯器將IL轉換為本機代碼。 相比之下,.NET Native將Windows應用程序直接編譯為本機代碼。 對於開發人員,這意味着:

  • 您的應用程序將提供本機代碼的卓越性能。
  • 您可以繼續使用C#或Visual Basic進行編程。
  • 您可以繼續利用.NET Framework提供的資源,包括其類庫,自動內存管理和垃圾收集以及異常處理。

最后我檢查了.NET框架都沒有超過250 MB! 是的,.NET Framework 3.5 SP1的脫機安裝程序是231MB,但它包含x2和x64版本的.NET 2,3和3.5 sp1。

有關各種版本安裝程序大小的詳細信息,請閱讀http://www.smallestdotnet.com

現在回答你的問題:
是的,讓你的客戶安裝一個大框架有點煩人,即使20-40MB確實很煩人。 使用.NET,與其他Native選項相比,優勢在於編程簡易性 (在我的選擇中)。

您的原生選項是:
MFC - 您只需安裝VS運行時,這是1-2MB,通常安裝在較新的PC上。 此外,您可以將您的應用程序與打包到dll中的MFC庫一起發送,該dll再次<2MB

這里的交易是你需要用C ++編程,整體庫是一個非常薄的本地庫層。 人們對MFC有嚴厲的看法。 我幾乎沒試過。

Win32 API - 這完全沒有問題,而且相當困難,你可以使用C或C ++,但你真的必須了解很多關於Win32 API以及windows本身如何工作(像windows消息,hwnds等)它不是好玩,相信我。 但在部署期間,您不需要任何外部庫。

還有更多選項 ,請看這里:
本機Windows應用程序開發選項
https://stackoverflow.com/questions/2711599/what-programming-language-should-i-use-to-create-small-native-windows-applicatio

以下是MFC上可能有所幫助的一些鏈接:
想學習Windows編程,一些建議?
如何決定是否將ATL,MFC,Win32或CLR用於新的C ++項目?
C ++ MFC vs .NET?
https://stackoverflow.com/questions/557114/stick-with-mfc-or-go-to-net

您可以使用c ++ Win 32項目創建本機exe。

唉,幾乎所有東西都需要一個下載運行時庫,即使你已經安裝了一個,你也需要不斷地為它們下載更新。 如果您使用它們編譯應用程序,即使是Microsoft C ++應用程序現在必須安裝必須安裝的安全更新。

但是......有一種解決方案。 如果你使用C ++,它有一個功能,只有你使用的東西被編譯到最終的應用程序。 通常,這需要鏈接到所有庫dll,但是如果你靜態鏈接到庫,你最終會得到一個盡可能小的單個.exe,你不需要任何dll(就像所有的代碼一樣)包含在庫中的將被編譯成.exe)。

與dll相比,這些好處值得商榷,但由於MS幾乎打破了.NET中共享dll的想法(即,您幾乎必須將所有共享dll放在與正在運行的應用程序相同的目錄中,這給您帶來了維護的噩夢如果你有這些共享的dll遍布你的所有應用程序)那么就沒有太大的區別了。 靜態鏈接正在變得有點卷土重來,聽起來就像你想要的那樣。

對於現代C ++開發,您可能想要查看Qt而不是MFC。 它的要好很多使用,是跨平台的,所以你可以在你的Android或Linux平台上運行的應用程序的Qt和Windows。

暫無
暫無

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

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