编译NetHack源代码 - 应该跳过的条件编译中的错误

时间:2016-08-07 23:24:38

标签: c compilation windows-7 nethack

我正致力于在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本身在使用全局搜索找到这些东西时仍然遇到问题)。

0 个答案:

没有答案