2012-07-14 65 views
3

背景:我主要使用Java編程,但每過一段時間,我都會調用在VC++中編譯的.dll中包含的一些函數。我試圖製作一個安裝程序包來檢查我的程序的先決條件。我試圖瞭解目標計算機何時需要.NET Framework運行我的程序以及何時需要Microsoft Visual C++可再發行組件包。什麼時候用VC++開發的程序需要在目標機器上安裝.NET Framework,它何時需要MS VC++可再發行組件包?

我認爲以下問題將有助於回答我明白我的主要問題:

說我編寫和編譯成功由一個簡單的程序「COUT < <‘喜’;」語句在Visual C++中。計劃運行的機器是否需要安裝.NET Framework?

所謂的Common Language Runtime和Microsoft Visual C++可再發行組件包(我知道它是另一種類型的運行庫)有什麼區別?

+0

當你在不同的機器上運行時會得到什麼錯誤?也許它不是在問.NET框架。 – Ajay 2012-07-14 09:35:26

+0

沒有錯誤,我很抱歉,也許我不應該把「我正在嘗試」。我更想弄清楚運行在vC++中開發的應用程序的先決條件。 – 2012-07-14 09:47:04

+0

您只需要安裝正確的VC++可再發行組件包。這意味着 - 正確的VC版本,正確的服務包和正確的機器(32位或64位)。 – Ajay 2012-07-14 09:49:06

回答

3

如果您正在使用它,則只需要.NET框架。一個簡單的cout << "hi";程序將絕對不需要額外的包/框架在任何DOS/Windows(假設它是一個控制檯應用程序)平臺上成功運行。

但是,如果您正在使用.NET框架的任何功能,那麼預計您需要它在目標計算機上存在。

至於再發行 - 這裏是從MSDN一個excerp:

這個軟件包安裝C運行時(CRT),標準C++,ATL,MFC,OpenMP和MSDIA庫的運行時組件

這意味着如果您將它們用作DLL,則需要此包中的庫(DLL)。您仍然可以直接將大多數需要的組件直接鏈接到可執行文件中,在這種情況下,您不需要DLL。您可以指定您更願意爲庫的代碼使用共享DLL資源,在這種情況下,您需要在目標計算機上運行可再分發的時間。

+1

感謝您的回覆。你能否給我提供更多的信息或鏈接,詳細說明如何將所需的組件直接鏈接到可執行文件中?我需要在目標機器上安裝可重新分發的運行時,因爲我需要msvcr100.dll文件。 – 2012-07-14 09:52:54