VC++2010中派生CDC類的問題


快過春節了,裝個VS2010嘗嘗鮮,不想遇到以上問題,具體是新建一個類繼承至CDC的CMemDC類,在XScrollBar.h中我包含了CMemDC類,結果出現如下錯誤,我嘗試過在編譯時先生成nafxcw.lib庫,但錯誤結果仍然。
1>nafxcw.lib(afxglobals.obj) : error LNK2005: "public: virtual __thiscall CMemDC::~CMemDC(void)" (??1CMemDC@@UAE@XZ) 已經在 XScrollBar.obj 中定義
1>D:\hp.exe:fatal error LNK1169: 找到一個或多個多重定義的符號

祝所有CSDN朋友新年快樂,兔年大吉,六六大順!

10 个解决方案

#1


引用樓主 lcy_888 的回復:
快過春節了,裝個VS2010嘗嘗鮮,不想遇到以上問題,具體是新建一個類繼承至CDC的CMemDC類,在XScrollBar.h中我包含了CMemDC類,結果出現如下錯誤,我嘗試過在編譯時先生成nafxcw.lib庫,但錯誤結果仍然。
1>nafxcw.lib(afxglobals.obj) : error LNK2005: "public: virtual __thiscall CMemDC::……


看它的提示消息,是這個析構函數重復定義了啊,你是不是在你這個類里,重新聲明了一個析構函數啊?
試過在 VC6 里編譯么?是只在VC2010 編譯不通過還是咋滴?

#2


引用 1 樓 tandyt 的回復:
引用樓主 lcy_888 的回復:
快過春節了,裝個VS2010嘗嘗鮮,不想遇到以上問題,具體是新建一個類繼承至CDC的CMemDC類,在XScrollBar.h中我包含了CMemDC類,結果出現如下錯誤,我嘗試過在編譯時先生成nafxcw.lib庫,但錯誤結果仍然。
1>nafxcw.lib(afxglobals.obj) : error LNK2005: "public: virtual ……


或者,你試試,清除所有編譯生成的文件(包括臨時文件),然后重新生成方案試試?以前在VC6.0試過,這樣重新編譯后有可能避免這個錯誤。

#3


正常情況下,應該不會出這個問題啊,是不是你的新類里,沒有設置只能包含一次?然后被多次包含而導致重復了?

#4


在VS2008中都編譯通過了,只有在VS2010中通不過,但加/force可以通過,但這樣程序性能不佳。

#5


有一次俺不知道怎么弄的,不是使用/FORCE:MULTIPLE,反正調整過頭文件的順序,弄好了,現象一樣,但是不是2010。

#6


我也覺得是包含順序所導致的問題,正在努力調整,望高手支招,謝了。

#7


問題解決了,原來VC2010已經包含了自己實現的CMemDC類,所以需要把自己編寫的或者引用第三方庫的CMemDC改名,否則錯誤難消。

#8


恩,有用,編譯電驢有同樣的問題

#9


學習....

#10


引用 7 樓 lcy_888 的回復:
問題解決了,原來VC2010已經包含了自己實現的CMemDC類,所以需要把自己編寫的或者引用第三方庫的CMemDC改名,否則錯誤難消。


CMemDC類在VC2010的MFC中已經包含:afxglobals.h(nafxcwd.lib)
所以這個名字將不用用於此自定義類了.將其改個名字即可繼續使用.

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com