C ++编译器错误C2371 - 重新定义WCHAR

时间:2008-09-03 17:08:35

标签: c++ visual-studio

当我包含一个本身包含odbcss.h的头文件时,我收到了C ++编译器错误C2371。我的项目设置为MBCS。

  

C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ include \ odbcss.h(430):   错误C2371:'WCHAR':重新定义;不同的基本类型1>
  C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ include \ winnt.h(289):   看到'WCHAR'的声明

我没有在odbcss.h中看到任何我可以设置避免这种情况的定义。有没有人见过这个?

4 个答案:

答案 0 :(得分:2)

这是一个已知错误 - 请参阅Microsoft Connect网站:

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98699

如果将应用程序编译为Unicode而不是MBCS,则不会发生错误。

答案 1 :(得分:1)

网上各种论坛上有六篇关于此的帖子 - 当在MFC存在的情况下使用odbcss.h时,这似乎可能是一个问题。大多数答案涉及更改包含标题的顺序(巫毒调试)。包含odbcss.h的头文件在其本机项目中编译得很好,但是当它包含在不同的项目中时,会出现此错误。我们甚至将它放在后一个项目的stdafx.h中,就在MFC的基础包含之后,仍然没有乐趣。我们最终通过将它移动到原始项目中的cpp文件来解决这个问题,该文件不使用MFC(无论如何都应该这样做 - 但它不是我们的代码)。所以我们有一个解决办法,但没有真正的解决方案。

答案 2 :(得分:0)

当您重新声明与已声明的变量同名的变量时,会发生此错误。您是否想看看odbcss.h是否声明了您已经拥有的变量?

答案 3 :(得分:0)

这有帮助吗?

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

线程中的内容:

  

Bruno van Dooren [MVP VC ++]但我知道这个问题的解决方案。   它通过改变“将wchar_t视为内置的项目设置来解决   输入“value”No(/ Zc:wchar_t-)“。但我使用的是”Xtreme Toolkit“   专业版“为了使外观和应用程序感觉良好,   当我通过更改项目设置来修复上述问题时   链接错误来自Xtreme Toolkit Library。那么我该怎么做才能解决   这个问题,在项目设置“将wchar_t视为内置类型”   值“是”,我写了以下语句,其中包括wab.h   头文件。您可以基于每个代码文件更改该设置   只使用该特定设置编译特定文件。如果   你可以解决你的问题,这将是最干净的   溶液

     

#define WIN16

     

#include "wab.h"

     

#undef WIN16

     

之后我的项目工作正常,所有与WAB相关的事情也正常。任何人指导我,是正确的方式   解决这个问题???并且,这会对其余部分产生任何影响   项目??我不担心。无论定义如何,它都是一个   两种情况下都是16位变量。我同意这不是最好看的   解决方案,但它应该工作如果WIN16内部没有其他影响   wab.h文件。

     

-

     

亲切的问候,Bruno van Dooren bruno_nos_pam_van_dooren@hotmail.com   仅删除“_nos_pam”