windows - winnt.h fejl på VS Command Prompt

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at udvikle et NPAPI-plugin ved hjælp af NIXYSA (http://code.google.com/p/nixysa/), der bruger Scons til at opbygge projektet. Nu prøver jeg bare at opbygge Hello World-prøveappen.
Problemet er, at det efter at have genereret C-kildefilerne løber ind i underlige winnt.h-fejl ved kompilering.
Nedenfor er kommandoen den bruger og resultatet:


c:UsersMoDocumentsProjectsChrome Plugin
ixysa-read-onlyexampleshel
lo\_world>"c:Program Files (x86)Microsoft Visual Studio 9.0vcincl" /Foglue
globals\_glue.obj /c glueglobals\_glue.cc /TP /nologo /DWIN32 /DOS\_WINDOWS /I. /I
 "C:UsersMoDocumentsProjectsChrome Plugin
ixysa-read-only
ixysasta
tic\_glue
papi" /I "C:UsersMoDocumentsProjectsChrome Plugin
ixysa-re
ad-only	hird\_party
papiinclude" /Iglue
globals\_glue.cc
C:Program FilesMicrosoft SDKsWindowsv7.0includewinnt.h(6361) : error C2146
: syntax error : missing ';' before identifier 'ContextRecord'
C:Program FilesMicrosoft SDKsWindowsv7.0includewinnt.h(6361) : error C4430
: missing type specifier - int assumed. Note: C++ does not support default-int
C:Program FilesMicrosoft SDKsWindowsv7.0includewinnt.h(6361) : error C4430
: missing type specifier - int assumed. Note: C++ does not support default-int
C:Program FilesMicrosoft SDKsWindowsv7.0includewinnt.h(12983) : error C206
5: 'PCONTEXT' : undeclared identifier
C:Program FilesMicrosoft SDKsWindowsv7.0includewinnt.h(12984) : error C214
6: syntax error : missing ')' before identifier 'ContextRecord'
C:Program FilesMicrosoft SDKsWindowsv7.0includewinnt.h(12984) : warning C4
229: anachronism used : modifiers on data are ignored
C:Program FilesMicrosoft SDKsWindowsv7.0includewinnt.h(12984) : error C218
2: 'RtlCaptureContext' : illegal use of type 'void'
C:Program FilesMicrosoft SDKsWindowsv7.0includewinnt.h(12984) : error C249
1: 'RtlCaptureContext' : definition of dllimport data not allowed
C:Program FilesMicrosoft SDKsWindowsv7.0includewinnt.h(12984) : error C205
9: syntax error : ')'
C:Program FilesMicrosoft SDKsWindowsv7.0includewinnt.h(13372) : error C214
3: syntax error : missing ';' before '\_\_stdcall'
C:Program FilesMicrosoft SDKsWindowsv7.0includewinnt.h(13372) : error C443
0: missing type specifier - int assumed. Note: C++ does not support default-int
C:Program FilesMicrosoft SDKsWindowsv7.0includewinnt.h(13376) : error C443
0: missing type specifier - int assumed. Note: C++ does not support default-int
C:Program FilesMicrosoft SDKsWindowsv7.0includewinnt.h(14982) : error C386
1: '\_\_readfsdword': identifier not found
C:Program Files (x86)Microsoft Visual Studio 9.0VCINCLUDExlocale(342) : war
ning C4530: C++ exception handler used, but unwind semantics are not enabled. Sp
ecify /EHsc


Jeg har søgt ret meget, og den eneste løsning, der foreslås, er, når DXSDK-overskrifterne forårsager konflikt, og de skal nævnes senere i listen over inkluderende mapper. Jeg har DXSDK installeret, men de indeholder ikke kataloger på listen for min VS9 eller i 'vcvars32.txt' af VS 2008 kommandoprompt.


De fire linjer, der definerer variablerne for VS-kommandoprompten, er:


@set PATH=\%DevEnvDir\%;\%VCINSTALLDIR\%BIN;\%VSINSTALLDIR\%Common7Tools;\%VSINSTALLDIR\%Common7Toolsin;\%FrameworkDir\%\%Framework35Version\%;\%FrameworkDir\%\%Framework35Version\%Microsoft .NET Framework 3.5 (Pre-Release Version);\%FrameworkDir\%\%FrameworkVersion\%;\%VCINSTALLDIR\%VCPackages;\%PATH\%
@set INCLUDE=\%INCLUDE\%;\%VCINSTALLDIR\%INCLUDE;\%VCINSTALLDIR\%ATLMFCINCLUDE
@set LIB=\%VCINSTALLDIR\%ATLMFCLIB;\%VCINSTALLDIR\%LIB;\%LIB\%
@set LIBPATH=\%FrameworkDir\%\%Framework35Version\%;\%FrameworkDir\%\%FrameworkVersion\%;\%VCINSTALLDIR\%ATLMFCLIB;\%VCINSTALLDIR\%LIB;\%LIBPATH\%


I VS kommandoprompt får jeg følgende for echo\% INCLUDE\%:


C:Program Files (x86)Microsoft Visual Studio 9.0VCATLMFCINCLUDE;C:Program
Files (x86)Microsoft Visual Studio 9.0VCINCLUDE;C:Program FilesMicrosoft SD
KsWindowsv7.0include;


Jeg kørte kommandoen cl.exe både i kommandoprompten (ved hjælp af nixysa-scriptet) og i VS-kommandoprompt gav begge de samme fejl.
Jeg tror ikke, at der er nogen problemer i den genererede C-kode, da det er den unedited Hello World, der grundlæggende testes, og andre synes ikke at have problemer med.


Så nogen ideer? Kunne problemet være i winnt.h det bruger eller?


Flere oplysninger: Vind 7 x64 på Intel Core 2 Duo

Bedste reference


Du skal tilføje en definition til


\_X86\_


http://andre-selmanagic.com/blog/2010/08/02/compiling-a-npapi-plugin-from-the-mozilla-source-code/[5]