我最近一直在尝试编译微软的Detours库,免费版本叫做“Express 3.0”。在其README指南中,它告诉我们使用'nmake'。我在detours目录下打开了一个命令窗口并尝试了'nmake'。 它说:“nmake不被认为是内部命令......”。
我已经打开VS2015 x86本机工具命令提示符,使用cd
将当前目录更改为该文件夹,然后尝试'nmake all':
C:\Windows\system32>cd C:\Program Files (x86)\Microsoft Research\Detours Express 3.0
C:\Program Files (x86)\Microsoft Research\Detours Express 3.0>nmake all
Microsoft (R) Program Maintenance Utility Version 14.00.23026.0
Copyright (C) Microsoft Corporation. All rights reserved.
cd "C:\Program Files (x86)\Microsoft Research\Detours Express 3.0\src"
Created ..\include
Created ..\lib.X86
Created ..\bin.X86
Created obj.X86
cl /W4 /WX /Zi /MTd /Gy /Gm- /Zl /Od /DDETOURS_BITS=32 /DWIN32_LEAN_AND_MEAN /D_WIN32_WINNT=0x403 /Gs /DDETOURS_X86=1 /DDETOURS_32BIT=1 /D_X86_ /DDETOURS_OPTION_BITS=64 /Fd..\lib.X86\detours.pdb /Foobj.X86\detours.obj /c .\detours.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
detours.cpp
C:\Program Files (x86)\Windows Kits\8.1\include\um\dbghelp.h(1544): error C2220: warning treated as error - no 'object' file generated
C:\Program Files (x86)\Windows Kits\8.1\include\um\dbghelp.h(1544): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
C:\Program Files (x86)\Windows Kits\8.1\include\um\dbghelp.h(3190): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
.\detours.cpp(156): warning C4456: declaration of 'pbNew' hides previous local declaration
.\detours.cpp(156): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
.\detours.cpp(147): note: see declaration of 'pbNew'
.\detours.cpp(163): warning C4456: declaration of 'pbNew' hides previous local declaration
.\detours.cpp(163): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
.\detours.cpp(147): note: see declaration of 'pbNew'
.\detours.cpp(1263): warning C4456: declaration of 'o' hides previous local declaration
.\detours.cpp(1263): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
.\detours.cpp(1112): note: see declaration of 'o'
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
C:\Program Files (x86)\Microsoft Research\Detours Express 3.0>set DETOURS_TARGET_PROCESSOR=x86
C:\Program Files (x86)\Microsoft Research\Detours Express 3.0>nmake all
Microsoft (R) Program Maintenance Utility Version 14.00.23026.0
Copyright (C) Microsoft Corporation. All rights reserved.
cd "C:\Program Files (x86)\Microsoft Research\Detours Express 3.0\src"
cl /W4 /WX /Zi /MTd /Gy /Gm- /Zl /Od /DDETOURS_BITS=32 /DWIN32_LEAN_AND_MEAN /D_WIN32_WINNT=0x403 /Gs /DDETOURS_X86=1 /DDETOURS_32BIT=1 /D_X86_ /DDETOURS_OPTION_BITS=64 /Fd..\lib.X86\detours.pdb /Foobj.X86\detours.obj /c .\detours.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
detours.cpp
C:\Program Files (x86)\Windows Kits\8.1\include\um\dbghelp.h(1544): error C2220: warning treated as error - no 'object' file generated
C:\Program Files (x86)\Windows Kits\8.1\include\um\dbghelp.h(1544): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
C:\Program Files (x86)\Windows Kits\8.1\include\um\dbghelp.h(3190): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
.\detours.cpp(156): warning C4456: declaration of 'pbNew' hides previous local declaration
.\detours.cpp(156): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
.\detours.cpp(147): note: see declaration of 'pbNew'
.\detours.cpp(163): warning C4456: declaration of 'pbNew' hides previous local declaration
.\detours.cpp(163): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
.\detours.cpp(147): note: see declaration of 'pbNew'
.\detours.cpp(1263): warning C4456: declaration of 'o' hides previous local declaration
.\detours.cpp(1263): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
.\detours.cpp(1112): note: see declaration of 'o'
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
C:\Program Files (x86)\Microsoft Research\Detours Express 3.0>
我该怎么办?我使用Windows 10和Visual Studio 2015。
答案 0 :(得分:3)
在“Detours Express 3.0”目录中打开“\ src \ Makefile”。
修改第19行,如下所示:
bool placePiece(char** pBoard, int colSize, int rowSize, int columnSelection, char player) {
if (columnSelection >= colSize) {
/* invalid column */
return false;
}
for (size_t i = 0; i < rowSize; ++i) {
/* loop to go over all rows - starting with 0 */
if (pBoard[columnSelection][i] == 0) {
/* find first empty row and set it to 'player' value */
pBoard[columnSelection][i] = player;
return true;
}
}
/* no free row found -> all rows already set*/
return false;
}
表示将选项“/ W4”更改为“/ W3”并删除选项“/ WX”。
然后重做“nmake”。
你的问题将得到解决。
答案 1 :(得分:0)
编译器告诉你它会将警告视为错误。这意味着如果您有任何警告,编译将失败。你有警告。
尝试在make文件中删除编译器的/WX
标志,或者添加编译器建议的/Wv:18
标志。