2012-04-13 110 views
0

在閱讀了一些關於託管代碼和非託管代碼的內容後,我意識到託管編譯器會生成IL,任何機器都可以理解。我們所需要做的只是將程序集部署在任何其他機器上,而CLR有助於正確運行它。VC++屬於託管或非託管類別?

但是,我還看到VC++不支持CLR及其非託管代碼。但是我們可以在任何機器上運行VC++二進制文件而不做任何修改它不需要與我們構建exe的機器具有相同的配置。

請澄清一下,非託管代碼和託管代碼是什麼?如果非託管代碼不應該在任何其他機器上運行,並且配置不同,例如不同的主板,芯片組等等...... VC++二進制文件如何在那裏運行?

回答

4

你不能在沒有任何修改的任何機器上運行VC++二進制文件。你只能在Windows機器上運行它,甚至不能運行它。例如,當前的VC++ 64位可執行文件不會在較早的Win 95下運行。

託管代碼是轉換爲IL的代碼,由CLR在運行時解釋。非託管代碼的代碼轉換爲原生機器碼,它由CPU直接運行。

+0

要運行.net exe,我們需要.net框架才能在其他機器上運行。它不是VC++ MFC EXE的情況嗎? – Naruto 2012-04-13 08:50:27

+0

@LLL是的,但「其他機器」!=「其他平臺」。例如,您不能在UNIX計算機上運行Windows EXE(至少不是沒有模擬器)。您不需要具有相同的配置,但您確實需要具有相同的平臺(即:相同的操作系統和體系結構)。 – littleadv 2012-04-13 08:51:57

+0

我們可以在unix下運行.net exe嗎?如果是這樣的話,CLR將默認安裝在unix中, – Naruto 2012-04-13 08:55:47

0

Visual C++是不是語言它是微軟提供的IDE,它帶有一個編譯器和一組庫。您可以使用此編譯器生成託管代碼或非託管代碼。在非託管代碼的情況下,它將生成Windows可以識別的格式的exe(或dll或其他二進制文件)。操作系統(在這種情況下,Windows)會抽象所有其他細節,如處理器,主板等。

+1

實際上 - Visual Studio是IDE時,Visual C++是編譯器和運行時,C++是語言。 – 2012-04-13 08:53:16

1

正常情況下,VC++生成非託管二進制文件。它們可以在所有的Windows電腦上運行(可能使用C++ - redist包)。

要用C++創建託管(.NET)應用程序,您需要使用C++/CLI

在這種情況下,託管代碼是.NET,非託管代碼是本地二進制文件。

要運行非託管二進制文件,您需要計算機上的相關庫,以運行需要.NET Framework的託管代碼。