Я пытаюсь скомпилировать драйвер для WinXP x86 Release, используя следующие команды:
C:\WinDDK\7600.16385.0\bin\setenv.bat C:\WinDDK\7600.16385.0\ fre x86 WXP no_oacr
cd C:\src
build
Это терпит неудачу из-за этих ошибок U1073 о msvcrt_winxp.obj. Я проверил, и нет нигде файла msvcrt_winxp.obj в C:\WinDDK
или его подкаталоги.
Мне кажется, проблема не в самом коде, но, возможно, я не настроил DDK прямо перед компиляцией. Почему я получаю эти ошибки U1073?
Я нашел этот похожий вопрос — сбой сборки драйвера для amd64 через winddk, но там ОП не включил соответствующую информацию, такую как результаты его сборки, и его вопрос остается без ответа. Я также нашел эту тему — http://www.techtalkz.com/microsoft-device-drivers/295015-wdk-linker-error-u1073.html, но ответа там тоже нет.
BUILD: Compile and Link for x86
BUILD: Loading c:\winddk\7600.16385.0\build.dat...
BUILD: Computing Include file dependencies:
BUILD: Start time: Thu Nov 13 12:04:25 2014
BUILD: Examining c:\src directory tree for files to compile.
c:\src
c:\src\common
c:\src\driver
c:\src\ui
BUILD: Saving c:\winddk\7600.16385.0\build.dat...
1>BUILD: Compiling (NoSync) c:\src\driver directory
2>BUILD: Compiling (NoSync) c:\src\ui directory
_NT_TARGET_VERSION SET TO WINXP
_NT_TARGET_VERSION SET TO WINXP
1>BUILD: Linking for c:\src\driver directory
2>BUILD: Linking for c:\src\ui directory
_NT_TARGET_VERSION SET TO WINXP
_NT_TARGET_VERSION SET TO WINXP
1>errors in directory c:\src\driver
1>NMAKE : fatal error U1073: don't know how to make 'c:\winddk\7600.16385.0\lib\wxp\i386\msvcrt_winxp.obj'
2>errors in directory c:\src\ui
2>NMAKE : fatal error U1073: don't know how to make 'c:\winddk\7600.16385.0\lib\wxp\i386\msvcrt_winxp.obj'
1>nmake.exe /nologo BUILDMSG=Stop. -i /nologo /f c:\winddk\7600.16385.0\bin\makefile.def BUILD_PASS=PASS2 LINKONLY=1 NOPASS0=1 MAKEDLL=1 MAKEDIR_RELATIVE_TO_BASEDIR= failed - rc = 2
2>nmake.exe /nologo BUILDMSG=Stop. -i /nologo /f c:\winddk\7600.16385.0\bin\makefile.def BUILD_PASS=PASS2 LINKONLY=1 NOPASS0=1 MAKEDLL=1 MAKEDIR_RELATIVE_TO_BASEDIR= failed - rc = 2
BUILD: Finish time: Thu Nov 13 12:04:26 2014
BUILD: Done
0 files compiled - 4 Errors
Я не знаю почему, но после того, как я установил еще более новую версию — 7600.16385.1
от http://www.microsoft.com/en-us/download/details.aspx?id=11800, Здание работало нормально, без ошибок.
Однако в первый раз это не сработало, но я заметил, что все еще жалуюсь 7600.16385.0
, поэтому я удалил все промежуточные выходные данные сборки, файлы .err и .log. После компиляции снова все заработало.
Я также заметил, что msvcrt_winxp.obj
присутствовал в c:\WinDDK\7600.16385.1
, но не в c:\WinDDK\7600.16385.0
,
Я должен признать, что я не скачал c:\WinDDK\7600.16385.0
Это была старая папка, которую я нашел на своем жестком диске, и я предположил, что использовал ее для компиляции проекта раньше, поэтому я просто скопировал ее. Проблемы могли быть из-за этого.
Итак, в заключение, проблема была с моей установкой WinDDK, а не с самим проектом, и установка более новой версии исправила это. Может быть, переустановка той же версии тоже подействовала бы, но мне не нужно проверять, что теперь она работает с более новой версией.