Ошибки компилирования: winnls.h
От: mortalis  
Дата: 05.08.09 07:13
Оценка:
Здравствуйте!
Возникла необходимость воспользоваться функцией WideCharToMultiByte. Для этого я подключаю winnls.h и при компиляции вылетает куча ошибок типа:
g:\winddk\6001.18002\inc\api\winnls.h(836) : error C2061: syntax error : identifier 'LGRPID'
g:\winddk\6001.18002\inc\api\winnls.h(836) : error C2059: syntax error : ';'
g:\winddk\6001.18002\inc\api\winnls.h(842) : error C2061: syntax error : identifier 'LCTYPE'
g:\winddk\6001.18002\inc\api\winnls.h(842) : error C2059: syntax error : ';'
g:\winddk\6001.18002\inc\api\winnls.h(848) : error C2061: syntax error : identifier 'CALTYPE'
g:\winddk\6001.18002\inc\api\winnls.h(848) : error C2059: syntax error : ';'
...и так далее
Что посоветуете? Может какой модуль подключить? Компилирую в консоли WDK

05.08.09 13:57: Перенесено модератором из 'C/C++' — Кодт
Re: Ошибки компилирования: winnls.h
От: Сергей Мухин Россия  
Дата: 05.08.09 07:19
Оценка:
Здравствуйте, mortalis, Вы писали:

M>Здравствуйте!

M>Возникла необходимость воспользоваться функцией WideCharToMultiByte. Для этого я подключаю winnls.h и при компиляции вылетает куча ошибок типа:
M>g:\winddk\6001.18002\inc\api\winnls.h(836) : error C2061: syntax error : identifier 'LGRPID'
M>g:\winddk\6001.18002\inc\api\winnls.h(836) : error C2059: syntax error : ';'
M>g:\winddk\6001.18002\inc\api\winnls.h(842) : error C2061: syntax error : identifier 'LCTYPE'
M>g:\winddk\6001.18002\inc\api\winnls.h(842) : error C2059: syntax error : ';'
M>g:\winddk\6001.18002\inc\api\winnls.h(848) : error C2061: syntax error : identifier 'CALTYPE'
M>g:\winddk\6001.18002\inc\api\winnls.h(848) : error C2059: syntax error : ';'
M>...и так далее
M>Что посоветуете? Может какой модуль подключить? Компилирую в консоли WDK

вместо winnls поставь windows.h
---
С уважением,
Сергей Мухин
Re[2]: Ошибки компилирования: winnls.h
От: mortalis  
Дата: 05.08.09 07:26
Оценка:
Тогда вылетают другие ошибки:
g:\winddk\6001.18002\inc\api\ntdef.h(827) : error C2011: '_FLOAT128' : 'struct' type redefinition
g:\winddk\6001.18002\inc\api\ntdef.h(878) : error C2011: '_LARGE_INTEGER' : 'union' type redefinition
g:\winddk\6001.18002\inc\api\ntdef.h(896) : error C2011: '_ULARGE_INTEGER' : 'union' type redefinition
g:\winddk\6001.18002\inc\api\ntdef.h(918) : error C2011: '_LUID' : 'struct' type redefinition
g:\winddk\6001.18002\inc\api\ntdef.h(1015) : error C2084: function 'ULONGLONG Int64ShllMod32(ULONGLONG,DWORD)' already has a body
g:\winddk\6001.18002\inc\api\ntdef.h(1031) : error C2084: function 'LONGLONG Int64ShraMod32(LONGLONG,DWORD)' already has a body
g:\winddk\6001.18002\inc\api\ntdef.h(1047) : error C2084: function 'ULONGLONG Int64ShrlMod32(ULONGLONG,DWORD)' already has a body
g:\winddk\6001.18002\inc\api\ntdef.h(1301) : error C2011: '_LIST_ENTRY' : 'struct' type redefinition
g:\winddk\6001.18002\inc\api\ntdef.h(1311) : error C2011: '_SINGLE_LIST_ENTRY' : 'struct' type redefinition
g:\winddk\6001.18002\inc\api\ntdef.h(1322) : error C2011: 'LIST_ENTRY32' : 'struct' type redefinition
g:\winddk\6001.18002\inc\api\ntdef.h(1328) : error C2011: 'LIST_ENTRY64' : 'struct' type redefinition
g:\winddk\6001.18002\inc\ddk\wdm.h(364) : error C2084: function 'BOOLEAN InterlockedBitTestAndComplement(volatile LONG *,LONG)' already has a body
g:\winddk\6001.18002\inc\ddk\wdm.h(2634) : error C2011: '_GENERIC_MAPPING' : 'struct' type redefinition
g:\winddk\6001.18002\inc\ddk\wdm.h(2655) : error C2011: '_LUID_AND_ATTRIBUTES' : 'struct' type redefinition
g:\winddk\6001.18002\inc\ddk\wdm.h(2679) : error C2011: '_ACL' : 'struct' type redefinition
g:\winddk\6001.18002\inc\ddk\wdm.h(2725) : error C2011: '_PRIVILEGE_SET' : 'struct' type redefinition
g:\winddk\6001.18002\inc\ddk\wdm.h(2781) : error C2011: '_SECURITY_IMPERSONATION_LEVEL' : 'enum' type redefinition
g:\winddk\6001.18002\inc\ddk\wdm.h(2808) : error C2011: '_SECURITY_QUALITY_OF_SERVICE' : 'struct' type redefinition
...
Re[3]: Ошибки компилирования: winnls.h
От: Сергей Мухин Россия  
Дата: 05.08.09 07:27
Оценка: 2 (1) :)
Здравствуйте, mortalis, Вы писали:

M>Тогда вылетают другие ошибки:


я же сказал ВМЕСТО.
Убери все остальные инлюды на Winxxxx
---
С уважением,
Сергей Мухин
Re[4]: Ошибки компилирования: winnls.h
От: mortalis  
Дата: 05.08.09 07:29
Оценка:
Да я и так вместо. вот все мои инклуды:
#include <Windows.h>
#include "mspyKern.h"
#include <stdio.h>
Re[5]: Ошибки компилирования: winnls.h
От: Сергей Мухин Россия  
Дата: 05.08.09 07:31
Оценка:
Здравствуйте, mortalis, Вы писали:

M>#include "mspyKern.h"


а это что? там наверняка win и стоит
---
С уважением,
Сергей Мухин
Re[6]: Ошибки компилирования: winnls.h
От: mortalis  
Дата: 05.08.09 07:37
Оценка:
Нет, там вот:
#include <fltKernel.h> — там нет win
#include <suppress.h> — там нет win
#include "minispy.h" — там нет win
Re[7]: Ошибки компилирования: winnls.h
От: mortalis  
Дата: 05.08.09 08:01
Оценка:
Если поменять вот так местами:
#include "mspyKern.h"
#include <stdio.h>
#include <Windows.h>
Выдает вот:
g:\winddk\6001.18002\inc\api\winbase.h(316) : error C2061: syntax error : identifier 'CRITICAL_SECTION'
g:\winddk\6001.18002\inc\api\winbase.h(316) : error C2059: syntax error : ';'
g:\winddk\6001.18002\inc\api\winbase.h(317) : error C2061: syntax error : identifier 'PCRITICAL_SECTION'
g:\winddk\6001.18002\inc\api\winbase.h(317) : error C2059: syntax error : ';'
g:\winddk\6001.18002\inc\api\winbase.h(318) : error C2061: syntax error : identifier 'LPCRITICAL_SECTION'
g:\winddk\6001.18002\inc\api\winbase.h(318) : error C2059: syntax error : ';'
...
Re[8]: Ошибки компилирования: winnls.h
От: Кодт Россия  
Дата: 05.08.09 08:22
Оценка:
Здравствуйте, mortalis, Вы писали:

M>Если поменять вот так местами:

M>Выдает вот:

А ты говоришь, "там нет win"... Всё там есть, только глубоко запрятано.

Если это твои хедеры — то замени всюду #include <winXXX.h> на <windows.h>, ибо.
К сожалению, Platform SDK написан коряво (ради ускорения препроцессора), и крайне чувствителен к количеству и порядку включения внутренних хедеров.
Внутри windows.h этот порядок соблюдён. Воспроизвести его самостоятельно — можно, но не нужно.

Ещё варианты возникновения проблем:
— Случайно подцепился сразу к нескольким PSDK (от разных компиляторов, например), и возникла каша из инклудов. Нужно смотреть, куда ведёт INCLUDE path.
— Какая-то библиотека тащит внутри себя "выдержки и цитаты" из PSDK.
— Какая-то библиотека вообще наплевала на PSDK, и возникло пересечение идентификаторов (но это наименее вероятно).
... << RSDN@Home 1.2.0 alpha 4 rev. 1207>>
Перекуём баги на фичи!
Re[9]: Ошибки компилирования: winnls.h
От: mortalis  
Дата: 05.08.09 09:41
Оценка:
Здравствуйте, Кодт, Вы писали:

К>А ты говоришь, "там нет win"... Всё там есть, только глубоко запрятано.


Простите за ламерство, но я не могу найти в инклудах win даже поиском в файлах WinDDK\6001.18002\inc\. Не подскажите, где конкретно?
Re[10]: Ошибки компилирования: winnls.h
От: Сергей Мухин Россия  
Дата: 05.08.09 09:43
Оценка:
Здравствуйте, mortalis, Вы писали:

M>Здравствуйте, Кодт, Вы писали:


К>>А ты говоришь, "там нет win"... Всё там есть, только глубоко запрятано.


M>Простите за ламерство, но я не могу найти в инклудах win даже поиском в файлах WinDDK\6001.18002\inc\. Не подскажите, где конкретно?


уберите все, кроме windows/h. Из текста оставьте только вызов нужной API ф-ии
потом добавляйте инклюды по одному
---
С уважением,
Сергей Мухин
Re: Ошибки компилирования: winnls.h
От: gear nuke  
Дата: 06.08.09 00:37
Оценка: 2 (1)
Здравствуйте, mortalis, Вы писали:

M>Здравствуйте!

M>Возникла необходимость воспользоваться функцией WideCharToMultiByte.

Эта функция из ядра недоступна. Там есть wcstombs...
.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[2]: Ошибки компилирования: winnls.h
От: mortalis  
Дата: 06.08.09 05:18
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Эта функция из ядра недоступна. Там есть wcstombs...


Большое спасибо за информацию!
А проблему с windows.h решаю так: делаю новый модуль, в котором объявляю windows.h и реализую необходимые функции. А этот модуль просто подключаю к основному модулю драйвера — компилится! По-другому не получилось — то syntax error, то redefinition..., то в одном модуле, то в другом...
Думаю проблема в том, что windows.h на С++, а драйвер можно только на С писать.
Всем откликнувшимся огромное спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.