我正致力于在Windows 7上的Visual Studio 2015中编译NetHack。
我收到以下错误(所有错误都以c:\program files (x86)\windows kits\10\include\10.0.10586.0\um\memoryapi.h
开头:
3>(815): error C2143: syntax error: missing ')' before '.'
3>(815): error C2059: syntax error: ')'
3>(816): error C2059: syntax error: ')'
以下是来源中的背景信息:
805 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
806
807 WINBASEAPI
808 _Ret_maybenull_ _Post_writable_byte_size_(Size)
809 PVOID
810 WINAPI
811 VirtualAllocFromApp(
812 _In_opt_ PVOID BaseAddress,
813 _In_ SIZE_T Size,
814 _In_ ULONG AllocationType,
815 _In_ ULONG Protection
816 );
这很令人困惑,因为#1,有一个编译器指令应该阻止使用这段代码 - 我正在运行Windows 7,而#2是第一个错误,{{ 1}}没有意义,因为源代码中没有missing ')' before '.'
。我该怎么办?
当我搜索整个解决方案.
时,Visual Studio无法找到它 - 奇异!我找到了_WIN32_WINNT
。但是,WINPFLAG = -DTILES -DMSWIN_GRAPHICS -DWIN32CON -D_WIN32_IE=0x0400 -D_WIN32_WINNT=0x0501
似乎没有被定义,尽管可能是由系统定义的(?)。尝试将自己定义为0x0A00,但取消注释上述代码会再次产生相同的错误。
现在我得到了_WIN32_WINNT_WIN10
:
Error C2733 'terminate': second C linkage of overloaded function not allowed NetHack nethack\include\extern.h 643
我用Notepad ++再次搜索整个解决方案,这是唯一的例子(奇怪的是,VS本身在使用全局搜索找到这些东西时仍然遇到问题)。