2010-09-15 59 views
2

J'utilise la bibliothèque Detours de Microsoft, et j'utilisais la version 32 bits (qui est gratuite). Je suis maintenant sur une installation 64 bits de Windows 7 et je ne peux pas sembler compiler Detours avec nmake.Construction bibliothèque de détours 32 bits

Voici l'erreur:

Microsoft (R) Program Maintenance Utility Version 9.00.21022.08 
Copyright (C) Microsoft Corporation. All rights reserved. 

     cd "C:\Program Files (x86)\Microsoft Research\Detours Express 2.1\src" 
Building for 64-bit X64. 
     if not exist "..\include" mkdir "..\include" 
     if not exist "..\lib" mkdir "..\lib" 
     if not exist "..\bin" mkdir "..\bin" 
     cl /LD /nologo /W4 /WX /Zi /MTd /Gy /Gm- /Zl /O1 /DWIN32_LEAN_AND_MEAN/
D_WIN32_WINNT=0x403 /D_WIN64 /DDETOURS_X64=1 /D_AMD64_ /Wp64 /Fe..\bin\detoured. 
dll /Fd..\bin\detoured.pdb detoured.cpp /link /release /machine:amd64 /base:0xf 
000000 /incremental:no /subsystem:console /entry:DllMain /implib:..\lib\detoure 
d.lib /export:Detoured kernel32.lib detoured.res 
cl : Command line warning D9035 : option 'Wp64' has been deprecated and will be 
removed in a future release 
detoured.cpp 
c:\program files (x86)\microsoft visual studio 9.0\vc\include\codeanalysis\sourc 
eannotations.h(17) : error C2371: 'size_t' : redefinition; different basic types 

     detoured.cpp : see declaration of 'size_t' 
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\basetsd.h(305) : warning C 
4311: 'type cast' : pointer truncation from 'const void *' to 'unsigned long' 
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\basetsd.h(314) : warning C 
4311: 'type cast' : pointer truncation from 'const void *' to 'long' 
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\basetsd.h(323) : warning C 
4312: 'type cast' : conversion from 'unsigned long' to 'void *' of greater size 
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h(12935) : error C38 
61: '__readfsdword': identifier not found 
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 9.0\ 
VC\BIN\cl.EXE"' : return code '0x2' 
Stop. 
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 9.0\ 
VC\BIN\nmake.exe"' : return code '0x2' 
Stop. 

Comme vous le voyez, il essaie de compiler 64 bits. Comment puis-je forcer nmake à construire pour 32bits?

Merci, Dave

Répondre

2

je besoin de Windows SDK pour compiler. Simplement google windfows SDK, téléchargez l'installation &, exécutez la console Windows SDK en mode admin et compilez!

Si vous installez SDK sur Windows 7 donne des erreurs, voici la solution:

http://support.microsoft.com/kb/2717426/de

This issue occurs when you install the Windows 7 SDK on a computer that has a newer version of the Visual C++ 2010 Redistributable installed. The Windows 7 SDK installs version 10.0.30319 of the Visual C++ 2010 Redistributable.

To resolve this issue, you must uninstall all versions of the Visual C++ 2010 Redistributable before installing the Windows 7 SDK. You may have one or more of the following products installed:

  • Microsoft Visual C++ 2010 x86 redistribuable
  • Microsoft Visual C++ 2010 x64 redistribuable
3

La prochaine fois, réglez simplement le DET OURS_TARGET_PROCESSOR variable d'environnement. Les valeurs valides sont x86, AMD64 et IA64. (La version Express de Detours ne prend en charge que x86.)