非MFC工程使用MFC庫小結

2021-06-27 18:59:39 字數 1707 閱讀 8933

一般的非mfc工程可以在包含相關標頭檔案後(如afx.h),就可以使用裡面封裝的類了。

1、afx.h中已經包含了windows.h標頭檔案,但是在非mfc工程中,也包含了了windows.h,因此會提示報錯。一般在stdafx.h中的windows.h注釋掉,然後寫上afx.h即可。

2、部分巨集重複定義,如預設dll庫的工程屬性中的預處理器中,已經定義了巨集_usrdll,但是在afx.h中也定義了該巨集,導致巨集重複定義。只要去除預處理器定義中的_usrdll即可。

3、mfc庫是多執行緒的,因此如果是在控制台應用程式中通過include來引入mfc庫,因為控制台應用程式預設是單執行緒的,mfc是多執行緒的,所以在【project】的【settings】對話方塊的「c/c++」下的「category」下拉列表框中選擇「code generation」,在「use run-time library」下拉列表框中選擇「debug multithread」.

4、mfc的標頭檔案必須寫在所有標頭檔案最前面,否則會報錯。

1、 問題闡述

在基於控制台的應用程式中並不支援mfc庫,如果使基於控制台的應用程式能夠使用mfc類庫呢?

2、 實現技巧

在控制台應用程式中通過include來引入mfc庫,因為控制台應用程式預設是單執行緒的,mfc是多執行緒的,所以在【project】的【settings】對話方塊的「c/c++」下的「category」下拉列表框中選擇「code generation」,在「use run-time library」下拉列表框中選擇「debug multithread」,如圖所示:

同時,我試驗成功,試驗**如下:

"stdafx.h

"//使用mfc類使用了下面標頭檔案

#include 

<

afxcoll.h

>

<

iostream

>

using

namespace

std;

intmain(

intargc, 

char

*argv)

非mfc工程使用mfc庫時,可參考以下步驟

1、工程設定中,將mfc的使用由原來的「使用標準windows庫」改為「在共享dll中使用mfc」(vc71)

microsoft foundation classes: use mfc in a shared dll, no using mfc(vc6)

(第一步不是必須的)

2、標頭檔案包含

不同的mfc類需包含的標頭檔案是不一樣的。

常用的類,如cstring, cedit 等,包含afxwin.h就可以了

使用cfile類,則包含afx.h

如果不清楚包含什麼標頭檔案的話,可以同msdn進行查詢,msdn中,對於mfc類的介紹中,都會給出相應的header file requirement.

3、#include 語句一定要寫在首行

另外還要注意的是,如果#include語句是在乙個標頭檔案裡,那麼對應標頭檔案的包含也要寫在首行。示例如下:

=============

test.h檔案的內容如下:

#include //保證該語句在首行

test.cpp的檔案內容如下:

#include 「test.h」 //同樣也要保證該語句在首行

=============

如果要用cfile

就#include

非MFC工程中使用MFC庫

為何不在一開始就建立 mfc工程呢?可能有兩種原因 1.在mfc 工程會產生很多嚮導生成的 以及資源檔案,如基於單文件的工程會有 view,doc 等類,很多時候我們並不需要這些東西,只需要乙個空工程就可以了。2.使用第三方框架建立的工程,我們很難更改它的工程屬性 如用firebreath開發瀏覽器...

非MFC工程使用MFC庫時的問題及解決辦法

非mfc工程使用mfc庫時的問題及解決辦法 最近正在寫乙個3ds max的模型匯入外掛程式,要求能夠將自定義格式的三維模型檔案匯入到max中進行編輯。max sdk提供了寫這種外掛程式的介面,可以在示例工程上直接進行修改,但這些工程都是標準c工程 未使用mfc 非 mfc工程建立時是不支援mfc特性...

非MFC工程使用MFC庫時的問題及解決辦法

peter lee 2005.08.20 一 問題由來 vc6和 vc71 的工程嚮導中都包含非 mfc的工程,諸如 win32 console project,win32 static library 非mfc 工程建立時是不支援 mfc特性的,然後我們在處理實際問題時有時會用到 mfc相關類,如...