如何在 C++ Builder 3.0 下編譯含有 MFC 的程式 ?
1998-04-23 12:21:36


雖然說 C++ Builder 3.0 是 Borland C++ 5.02 的下一個版本,一樣支援 MFC ,但若要在  C++ Builder 3.0 下使用 MFC 並不簡單。不是直接寫個 MFC native Code 並在 Project Option 中再勾選個 MFC Compatibility 這麼簡單,若你只這樣做,保證你在編譯時一定會得到一堆的 Warnning 與 Error。

要讓你與 BCB 都能夠輕鬆的編譯 MFC ,我們所必需的就是自己動點手腳,並將這個動過手腳的 Project 檔給放到 Object Repository;之後,你只需要按下選單上的 New 就可以開始你的 MFC in BCB之路了。

Step 1

New 一個新的 Project

Step 2

在 Project Option裡的 Directories\Conditionals 這一頁的Conditionals\Conditional defines中給加入

_X86_
_WINDOWS
_MSC_VER=1100
_AFX_PORTABLE
_AFX_NOFORCE_LIBS
_MT
_CRT_PORTABLE
_AFX_NO_DEBUG_CRT

這幾個編譯用的參數。
並記得在 include path 加入 $(BCB)\include\MFC 這一項。

Step 3
接著在 Advance Compilers 這一頁裡將 MFC Compatibility 給勾選起來,

Step 4
緊接著,將檔案給存起來,裡用文字編輯器來修改這個 Project 的 bpr 檔。
找到 CFLAG1 = ...... 這一行
將這一行給為
CFLAG1 = -Od -Hc -w -k -r- -y -v -vi- -c -w-par -w-inl -w-hid -w-aus -g0 -WM -W

再找到 CFLAG3 = ...... 這一行
將這一行給為
CFLAG3 = -Tkh30000 -VF

最後找到 ALLLIB = .... 這一行
將這一行給為
ALLLIB = $(LIBFILES) $(LIBRARIES) nafxcw.lib import32.lib cw32mt.lib

接著就是存檔囉!

Step 5
這樣一來,就可以直接在BCB3下享用MFC囉!

不可不知道

在此範例中,所編譯出來的檔案將會是 static link 的版本,並非 dynamic link,要怎麼樣在 BCB 3 下做 dynamic link MFC library 呢?在此先賣個關子,看看 BCB 裡所附上的範例吧!

此外,在 BCB 有很多方式來鏈結 VCL 與 MFC,大致可分為兩類 :

1、以   TApplication 為主體,而程式中混合使用 VCL與 MFC 所提供的其他類,如CDC、CPoint、CFile 等等.....。
2、以 MFC 的 CApp 為主體,在選單中呼叫 VCL 所組合而成的 Form。

而這兩類要怎麼樣在 BCB 裡完成呢?聰明的讀者,動動您的腦筋想想看吧!