VC程序採用動態鏈接庫方式且靜態鏈接MFC方法

1、 新建MFC_exe主程序,項目類型選擇MFC->MFC Application。MFC鏈接方式採用靜態鏈接。

2、 新建MFC_dll程序,項目類型選擇MFC->MFC Dll。在Dll Type選項中選擇MFC extention Dll。

3、 爲項目MFC_dll中新增類ClassAdd,在項目MFC_exe中調用該類,編譯。提示錯誤如下:

error LNK2019: unresolved externalsymbol "public: __thiscall ClassAdd::~ClassAdd(void)

   修改類ClassAdd的聲明爲class AFX_EXT_CLASS ClassAdd。並在項目MFC_exe的項目依賴項中選擇MFC_dll,即表示項目MFC_exe依賴於MFC_dll。

4、 解決方案編譯成功,至此完成採用動態調用MFC方式的程序。

5、 修改MFC_dll的項目屬性,修改MFC使用方式爲Use MFC in a Static Library。編譯項目MFC_dll,提示錯誤:fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds

6、 修改MFC_dll的項目屬性C/C++ -> Code Generation -> Runtime Library, 選擇Multi-threaded Debug DLL (/MDd),如果是Release版本,選擇Multi-threaded DLL (/MD)。編譯項目MFC_dll,提示錯誤:fatal error C1189: #error :  Building MFC application with /MD[d] (CRT dllversion) requires MFC shared dll version. Please #define _AFXDLL or do not use/MD[d]。

7、 修改MFC_dll項目下的stdafx.h文件,在該文件頭部增加以下一行內容:#define _AFXDLL,編譯項目MFC_dll成功。

8、 編譯項目MFC_exe,如果成功則結束。如果失敗,按照步驟5、6、7對項目MFC_exe進行設置,設置完畢後,重新編譯項目。


具體代碼可參見http://download.csdn.net/detail/yanzel/6278435

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章