wxWidgets и VC ++ - PullRequest
       10

wxWidgets и VC ++

2 голосов
/ 01 марта 2009

Я решил сегодня ознакомиться с wxWidgets. Я скачал версию 2.8.9 (текущий выпуск) и скомпилировал библиотеку во всех нужных режимах.

Я могу собирать / запускать сэмплы, которые поставляются с wxWidgets из коробки. Однако, когда я компилирую с / Za (то есть, языковые расширения отключены), я получаю более 100 ошибок сборки даже на самом маленьком примере wxWidgets.

Я не могу найти какую-либо документацию по этому вопросу. Могу ли я определить что-то, что переключит внутренние компоненты wxWidget на совместимость со стандартами (по крайней мере, в том, что касается соответствия VC ++)?

Возможно, я сделал что-то не так при сборке оригинальной библиотеки ... Кто-нибудь даже сталкивался с этой "проблемой" раньше?

Спасибо!

РЕДАКТИРОВАТЬ: Я забыл упомянуть, что я использую VC ++ 9.

Также, вот первые несколько ошибок:

------ Началась сборка: Проект: минимальный, Конфигурация: Unicode Debug Win32 ------

Компиляция ...

minimal.cpp

c: \ wxWidgets-2.8.9 \ include \ wx / dynarray.h (69): ошибка C2143: синтаксическая ошибка: отсутствует ')' перед '*'

c: \ wxWidgets-2.8.9 \ include \ wx / dynarray.h (69): ошибка C2143: синтаксическая ошибка: отсутствует ';' до '*'

c: \ wxWidgets-2.8.9 \ include \ wx / dynarray.h (69): ошибка C2059: синтаксическая ошибка: ')'

c: \ wxWidgets-2.8.9 \ include \ wx / dynarray.h (69): ошибка C4430: отсутствует указатель типа - предполагается int. Примечание: C ++ не поддерживает default-int

c: \ wxWidgets-2.8.9 \ include \ wx / dynarray.h (810): ошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором 'SCMPFUNC'

c: \ wxWidgets-2.8.9 \ include \ wx / dynarray.h (810): ошибка C4430: отсутствует указатель типа - предполагается int. Примечание: C ++ не поддерживает default-int

c: \ wxWidgets-2.8.9 \ include \ wx / dynarray.h (810): ошибка C4430: отсутствует указатель типа - предполагается int. Примечание: C ++ не поддерживает default-int

c: \ wxWidgets-2.8.9 \ include \ wx / dynarray.h (811): ошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором 'SCMPFUNC'

c: \ wxWidgets-2.8.9 \ include \ wx / dynarray.h (811): ошибка C4430: отсутствует указатель типа - предполагается int. Примечание: C ++ не поддерживает default-int

c: \ wxWidgets-2.8.9 \ include \ wx / dynarray.h (811): ошибка C4430: отсутствует указатель типа - предполагается int. Примечание: C ++ не поддерживает default-int

РЕДАКТИРОВАТЬ: Похоже, первая ошибка вызвана тем, что используется _cdecl . Похоже, defs.h только проверяет, определено ли __ VISUALC __ . Ничего о педантизме не видно ...

1 Ответ

5 голосов
/ 01 марта 2009

Вы, вероятно, обнаружите, что не сможете создать даже простое приложение Win32, не говоря уже о приложении wxWidgets, с /Za, поскольку заголовки Windows Platform SDK, включенные в VS2008, используют языковые расширения. Единственное решение - отключить /Za.

Конкретная ошибка, которую вы видите, заключается в том, что ключевое слово _cdecl является расширением Microsoft, а не частью стандартного C ++. Дополнительные сведения см. В документации для /Za и Расширения Microsoft для C и C ++ и C ++ Keywords на страницах MSDN.

...