簡體   English   中英

在沒有MSVCRT運行時的情況下在Visual Studio 2012中編譯C

[英]Compile C in Visual Studio 2012 without MSVCRT runtime

Visual Studio 2012 (及更早版本)能夠編譯C代碼。 普通C ,不是C ++。 如果您想避免運行時混亂,這將是一個很好的功能。 我想到編譯純C二進制文件,並希望在沒有 MSVCRT運行時的情況下進行編譯。

添加/TC (編譯為C)選項后,我希望獲得僅具有基本依賴項(例如kernel32和ntdll)的二進制文件。 但是,這是鏈接的:

在此處輸入圖片說明

我們要使用VS 2012,而不是運行時。 GCC編譯器不需要它,因此也必須有一種在VS中編譯“簡單”二進制文件的方法。 我們不一定需要復雜的字符串函數或日期/時間庫,只需簡單的代碼即可。

問題:是否可以在沒有MSVCRT運行時(甚至C ++代碼)的情況下在Visual Studio 2012中編譯C代碼?

編輯: 沒有靜態鏈接( /MT

問題“在沒有MSVCRT運行時(甚至C ++代碼)的情況下是否可以在Visual Studio 20xx中編譯C代碼”的正確答案? 是使用/ MT選項(“ Configuration Properties > C/C++ > Code Generation > Runtime Library=Multi-threaded (/MT) )。 這將完全按照您的需要創建一個不依賴任何MSVCRTxx的可執行文件。 據我所知,僅此而已。 它對您想做的任何事情都沒有任何限制-像memcpy這樣的所有標准C庫函數仍然可以使用。 唯一的不同是.EXE文件稍大。 多年來,我一直使用MSVC6,MSVC2005,MSVC2008和MSVC2013制作和分發從純ANSI C代碼創建的EXE文件,沒有任何問題。

至於用“沒有靜態鏈接(/ MT)”的限定詞來回答問題的方法,那是不可以的。

暫無
暫無

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

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