在靜態庫中使用MFC

2021-07-25 18:59:37 字數 629 閱讀 4428

在專案的配置屬性中配置「

mfc的使用」時,選項的區別:如果選擇"在共享dll中使用mfc"的話,編譯後的程式中不包含mfc庫,所以檔案會比較小,但是如果程式直接移到乙個沒有安裝過mfc的機器上時,可能會導致找不到mfc的dll,如果選擇"靜態庫中使用mfc  ",那麼編譯後的程式就直接包含了呼叫mfc的部分的庫,檔案可能會大一些,但是可以直接移到其他機器上執行. 1.

在選擇"在共享dll中使用mfc"時編譯沒有問題,但是在改為選擇"靜態庫中使用mfc "時出現了庫重定義的問題。。。

解決方法:(分三步)

首先配置mfc的使用為在靜態庫中使用mfc:

屬性->常規->mfc的使用,選擇「在靜態庫中使用 mfc」

然後,配置執行庫:

屬性->c/c++->**生成->執行庫,選擇「多執行緒(/mt)」

最後,在附加依賴項中加入nafxcw.lib和libcmt.lib兩個庫檔案:(注意:庫

nafxcw.lib

必須先於庫

libcmt.lib

,前者為

mfc靜態鏈結庫

,後者為

c執行時庫)

屬性->鏈結器->輸入->附加依賴項,新增nafxcw.lib和libcmt.lib

ok了!!!

在共享DLL中使用MFC 和在靜態庫中使用MFC

使用vs2008,在專案屬性中有一項mfc的使用,有三種設定 1.使用標準windows庫 2.在共享dll中使用mfc 3.在靜態庫中使用mfc 第一種顧名思義。第二種指的是打包時一些mfc的dll的內容沒有被包含在exe檔案中,所以exe檔案較小,但是執行時要求系統中要有相關的dll檔案。第三種...

在共享DLL中使用MFC 和在靜態庫中使用MFC

使用vs2008,在專案屬性中有一項mfc的使用,有三種設定 1.使用標準windows庫 2.在共享dll中使用mfc 3.在靜態庫中使用mfc 第一種顧名思義。第二種指的是打包時一些mfc的dll的內容沒有被包含在exe檔案中,所以exe檔案較小,但是執行時要求系統中要有相關的dll檔案。第三種...

在共享Dll和靜態庫中使用MFC的區別

使用vs編譯mfc工程是在專案屬性中有一項mfc的使用,有三種設定 1.使用標準windows庫 2.在共享dll中使用mfc 3.在靜態庫中使用mfc 第一種顧名思義。第二種指的是打包時一些mfc的dll的內容沒有被包含在exe檔案中,所以exe檔案較小,但是執行時要求系統中要有相關的dll檔案。...