#c #wdk
#c #wdk
Вопрос:
я использую Visual Studio 2005 с WDK 7600.16385.1. я компилирую драйвер принтера пользовательского режима, он будет успешно собран, когда я выберу «Win32» для платформы, но когда я собираю этот драйвер для «x64», я получаю ошибку компилятора, которая приведена ниже
C:WinDDK7600.16385.1incapiwinnt.h (135) : неустранимая ошибка C1189: #ошибка: «Нет целевой архитектуры»
я проверил winnt.h, и код приведен ниже
#if defined(_WIN64)
#if defined(_AMD64_)
#define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD )
#elif defined(_IA64_)
#define PROBE_ALIGNMENT( _s ) (TYPE_ALIGNMENT( _s ) > TYPE_ALIGNMENT( DWORD ) ?
TYPE_ALIGNMENT( _s ) : TYPE_ALIGNMENT( DWORD ))
#else
#error "No Target Architecture"
#endif
#define PROBE_ALIGNMENT32( _s ) TYPE_ALIGNMENT( DWORD )
#else
ниже приведены переключатели командной строки C / C (скопировано из проекта «property-> C / C -> Command Line»).
/Od /Oi /I "..inc" /I "C:WinDDKWXPincwxp" /I "C:WinDDKWXPinccrt" /I "C:WinDDKWXPinc" /D "_X86_=1" /D "i386=1" /D "STD_CALL" /D "CONDITION_HANDLING=1" /D "WIN32_LEAN_AND_MEAN=1" /D "NT_UP=1" /D "NT_INST=0" /D "WIN32=100" /D "_NT1X_=100" /D "_WIN32_WINNT=0X0500" /D "WINNT" /D "DEVL=1" /D "FPO=0" /D "UNICODE" /D "_IDWBUILD" /D "USERMODE_DRIVER" /D "DBG=1" /D "DEBUG" /D "RDRDBG" /D "SRVDBG" /GF /FD /MTd /Zp8 /GS- /Gy /Fo".Debug/" /Fd"x64Debugvc80.pdb" /W1 /nologo /c /Z7 /Gz /TP /FI "..incwarning.h" /errorReport:prompt
Пожалуйста, помогите мне как можно скорее
Комментарии:
1. я вставил макрос до ошибки «Нет целевой архитектуры» и обнаружил, что определены X86 и _M_AMD64, я скопировал форму макроса, т. е. заданную gexaman по URL social.msdn.microsoft.com/forums/en-US/vcgeneral/thread /…
2. для получения дополнительной информации я заменил x86 на AMD64 и получил ошибку «Результат ошибки 1, возвращенный из ‘C:Program Файлы Microsoft Visual Studio 8VCbinx86_amd64cl.exe ‘.»
3. когда я определяю как X86, так и AMD64, я получаю «ошибка C2011: ‘_CONTEXT’: переопределение типа ‘struct’ C:WinDDK7600.16385.1incapiwinnt.»
4. вы можете просто отредактировать свой вопрос, добавлять комментарии не нужно.
Ответ №1:
Моим лучшим предположением было бы определить _AMD_64_
в свойствах проекта (при условии, что вы используете x64, а не ia64)
Ответ №2:
Почему вы пытаетесь создать это из Visual Studio? Используя WDK и стандартную процедуру сборки (т. е. исходные коды / makefile и build).
-скотт