Ошибка компилятора C ++ C2371 - переопределение WCHAR - PullRequest
1 голос
/ 03 сентября 2008

Я получаю ошибку компилятора C ++ C2371, когда я включаю заголовочный файл, который сам включает odbcss.h. Мой проект настроен на 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 ]

2 голосов
/ 03 сентября 2008

Это известная ошибка - см. Веб-сайт Microsoft Connect:

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

Ошибка не возникает, если вы компилируете свое приложение как Unicode вместо MBCS.

1 голос
/ 03 сентября 2008

На различных форумах в Интернете есть полдюжины постов по этому поводу - возможно, это проблема при использовании odbcss.h в присутствии MFC. Большинство ответов включают изменение порядка включенных заголовков (отладка вуду). Заголовок, который включает odbcss.h, прекрасно компилируется в своем собственном проекте, но когда он включен в другой проект, он выдает эту ошибку. Мы даже поместили его в stdafx.h последнего проекта, сразу после включения базы для MFC, и до сих пор не рады. Мы наконец обошли его, переместив его в файл cpp в исходном проекте, который не использует MFC (что должно было быть сделано в любом случае - но это был не наш код). Итак, у нас есть обходной путь, но нет реального решения.

0 голосов
/ 03 сентября 2008

это помогает?

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

Содержимое из ветки:

Бруно ван Дурен [MVP VC ++], но я знаю решение этой проблемы. это решается путем изменения настройки проекта "Обрабатывать wchar_t как встроенный Тип "значение" Нет (/ Zc: wchar_t-) ". Но я использую" Xtreme Toolkit Professional Edition "для создания привлекательного внешнего вида приложения, когда я решу вышеуказанную проблему, изменив настройки проекта на новый ошибки компоновки происходят из библиотеки Xtreme Toolkit. Так что я делаю, чтобы исправить эта проблема в настройках проекта "Обрабатывать wchar_t как встроенный тип" Значение "да", и я написал следующие заявления, где я включил wab.h заголовочный файл Вы можете изменить этот параметр для каждого файла кода так, что только определенные файлы компилируются с этим конкретным параметром. Если Вы можете решить свои проблемы так, чтобы это было самым чистым решение.

#define WIN16

#include "wab.h"

#undef WIN16

и после этого мой проект работает нормально, и все, что связано с WAB, также работает нормально. любой ведет меня, это правильный путь Для решения этой проблемы??? и окажет ли это какое-либо влияние на остальную часть проект ?? Я бы не беспокоился об этом. независимо от определения, это 16-битная переменная в обоих случаях. Я согласен, что это не самый красивый решение, но оно должно работать, если WIN16 не имеет другого влияния внутри файл wab.h.

-

С уважением, Бруно ван Дурен bruno_nos_pam_van_dooren@hotmail.com Удалить только "_nos_pam"

0 голосов
/ 03 сентября 2008

Эта ошибка возникает, когда вы повторно объявляете переменную с тем же именем, что и переменная, которая уже была объявлена. Вы посмотрели, объявил ли odbcss.h переменную, которая у вас уже есть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...