peter lee 2005.08.20
一、問題由來
vc6和
vc71
的工程嚮導中都包含非
mfc的工程,諸如
win32 console project, win32 static library
。非mfc
工程建立時是不支援
mfc特性的,然後我們在處理實際問題時有時會用到
mfc相關類,如
cstring, cedit
等等,這是很正常的。可能有人會說,為何不在一開始就建立
mfc工程呢?問題在於
mfc工程會產生很多嚮導生成**,如基於單文件的工程會有
view,doc
等類,很多時候我們只需要乙個空工程就可以了。
二、常見問題
非mfc
工程使用
mfc庫時最常見的問題就是
windows.h
重複包含錯誤,具體如下:
三、解決辦法
非mfc
工程使用
mfc庫時,可參考以下步驟
1、工程設定中,將
mfc的使用由原來的「使用標準
windows
庫」改為「在共享
dll中使用
mfc」(
vc71
) 如果是英文版,相關選項是:
microsoft foundation classes: use mfc in a shared dll, no using mfc
(vc6
) note:
因為我用的是中文版的
vc71,
英文版的
vc6.
2、標頭檔案包含
不同的
mfc類需包含的標頭檔案是不一樣的。
常用的類,如
cstring, cedit
等,包含
afxwin.h
就可以了
如果不清楚包含什麼標頭檔案的話,可以同
msdn
進行查詢,
msdn
中,對於
mfc類的介紹中,都會給出相應的
header file requirement.3、#
include
語句一定要寫在首行
這一點很重要,通常出現前面講到的
windows.h
重複包含錯誤,都是因為
#include
語句沒有寫在首行。
另外還要注意的是,如果
#include
語句是在乙個標頭檔案裡,那麼對應標頭檔案的包含也要寫在首行。示例如下:
=============
test.h
檔案的內容如下:
#include //
保證該語句在首行
test.cpp
的檔案內容如下:
#include 「test.h」 //
同樣也要保證該語句在首行
=============
ps:
這麼做的具體原因我也不知道,我是在實際除錯中琢磨出這個道理的。我自己在這個問題上花了很多冤枉時間,寫下該篇,就是希望大家不要在這個問題上絆腳。
非MFC工程使用MFC庫小結
一般的非mfc工程可以在包含相關標頭檔案後 如afx.h 就可以使用裡面封裝的類了。1 afx.h中已經包含了windows.h標頭檔案,但是在非mfc工程中,也包含了了windows.h,因此會提示報錯。一般在stdafx.h中的windows.h注釋掉,然後寫上afx.h即可。2 部分巨集重複定...
非MFC工程中使用MFC庫
為何不在一開始就建立 mfc工程呢?可能有兩種原因 1.在mfc 工程會產生很多嚮導生成的 以及資源檔案,如基於單文件的工程會有 view,doc 等類,很多時候我們並不需要這些東西,只需要乙個空工程就可以了。2.使用第三方框架建立的工程,我們很難更改它的工程屬性 如用firebreath開發瀏覽器...
非MFC工程使用MFC庫時的問題及解決辦法
非mfc工程使用mfc庫時的問題及解決辦法 最近正在寫乙個3ds max的模型匯入外掛程式,要求能夠將自定義格式的三維模型檔案匯入到max中進行編輯。max sdk提供了寫這種外掛程式的介面,可以在示例工程上直接進行修改,但這些工程都是標準c工程 未使用mfc 非 mfc工程建立時是不支援mfc特性...