2012-03-07 73 views
1

我想寫一個程序與VC++在VS 2008
我希望我的程序可以在WIN NT,XP,Vista和WIN 7上運行。
我希望我的程序只是一個.EXE文件。哪個選項是「運行時庫」和「MFC的使用」的最佳選擇

我不知道 「運行庫」 和 「使用MFC的」 的選項理念

組合象下面這樣:

 
------------------------------------------------------------------------ 
|        |Multi-threaded | Multi-threaded DLL|  
------------------------------------------------------------------------ 
|Use MFC in a Static Library |  A  |   B   | 
------------------------------------------------------------------------ 
|Use MFC in a Shared DLL  |  C  |   D   | 
------------------------------------------------------------------------ 

我有一些問題,如果你明白了,請你幫我個忙。謝謝。

。這四種組合哪一種最適合我? A,B,C或D
。經過我的測試,選擇B會發生編譯錯誤,爲什麼?
。當我創建一個VS新項目或解決方案,該默認選項d,所以d是commond方案最好的選擇

:)等待你完美的答案。

回答

1

我個人的偏好是使用MFC作爲靜態庫,這樣就沒有其他的依賴關係。在編寫MFC時,通常使用共享DLL來節省資源,但在這個技嘉內存和Terabyte磁盤時代,幾百K就不會有問題。

使用MFC作爲DLL有一個優點,即如果有Service Pack更新,可以在不替換應用程序的情況下安裝新的DLL。

如果您正在編寫使用MFC的DLL(而不是EXE),它可能需要與應用程序共享MFC對象並使用應用程序的事件循環。在這種情況下,你不得不使用MFC作爲DLL。我認爲這就是爲什麼你的組合「B」不起作用。

+1

感謝您的詳細說明。您能否向我展示關於運行時庫的一些信息?謝謝。 – jell 2012-03-08 02:45:32

0

要在MFC中獲得真正的靜態鏈接可執行文件,您必須選擇A。這將告訴MFC靜態編譯它的類,並靜態鏈接運行時庫(我相信它是MSVCR.dll文件)。編譯器不再允許選擇B,因爲它確實沒有用處。只有當您想要靜態鏈接多個庫(您自己的,也許)時,纔會使用該選項,但是您希望所有這些庫共享運行時。你最終有內存分配問題和其他廢話。

因此,對於您的項目,選擇靜態鏈接和MFC和運行時,選項A.