2008-09-03 406 views
1

當包含頭文件本身包含odbcss.h時,C++編譯器錯誤C2371。我的項目設置爲MBCS。C++編譯器錯誤C2371 - 重新定義WCHAR

C:\ Program Files文件\微軟的SDK \的Windows \ v6.0A \包括\ odbcss.h(430): 錯誤C2371: 'WCHAR':重定義;不同的基本類型1>
C:\ Program Files文件\微軟的SDK \的Windows \ v6.0A \ \包括WINNT.H(289): 看到的 'WCHAR'

我看不出有任何的聲明在odbcss.h中定義我可以設置以避免這種情況。有沒有人看過這個?

回答

0

當您重新聲明與已聲明的變量名稱相同的變量時,會發生此錯誤。你看看odbcss.h是否已經聲明瞭你已經擁有的變量?

0

對此有幫助嗎?從線程

http://bytes.com/forum/thread602063.html

內容:

布魯諾麪包車Dooren [MVP VC++],但我知道這個問題的解決方案。 它通過更改「處理wchar_t作爲內置的 類型」值「No(/ Zc:wchar_t-)」的項目設置來解決。但我正在使用「極限工具包 專業版」以獲得良好外觀&感受應用程序, 當我通過更改項目設置修復上述問題時,新的 鏈接錯誤來自Xtreme Toolkit Library。所以我該怎麼修復 這個問題,在項目設置「對待wchar_t作爲內置類型」 值「是」,我寫了下面的語句,其中我包括wab.h 頭文件。您可以在每個代碼文件的基礎上更改該設置,所以 只有特定文件使用該特定設置進行編譯。如果 您可以通過這種方式解決您的問題,它將是最乾淨的 解決方案。

#define WIN16

#include "wab.h"

#undef WIN16

之後,我的項目是工作的罰款和所有相關的WAB的東西也工作正常。任何一個指導我,是否正確的方式 來解決這個問題?並且,這會對 項目的其餘部分產生什麼影響?我不會爲此擔心。無論定義如何,在兩種情況下都是16位變量。我同意這不是最好看的 解決方案,但它應該工作,如果WIN16在 wab.h文件中沒有其他影響。

-

親切的問候,布魯諾·Dooren [email protected] 僅刪除「_nos_pam」

+2

儘管此鏈接可能會回答問題,但最好在此處包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – Mac 2012-11-13 20:29:33

1

有關於這個各地的網絡各種論壇半打的職位 - 它當在MFC中使用odbcss.h時,似乎可能會成爲問題。大部分答案都涉及到改變包含頭文件的順序(voodoo調試)。包含odbcss.h的頭文件在其本地項目中編譯得很好,但是當它包含在不同的項目中時,會出現此錯誤。我們甚至把它放在後一個項目的stdafx.h中,就在MFC的基本包含之後,並且仍然沒有喜悅。我們最終通過將它移動到原始項目中的cpp文件來解決它,該項目不使用MFC(本來應該完成的 - 但它不是我們的代碼)。所以我們有一個解決方法,但沒有真正的解決方案。