1

我正在尝试编译 pin 工具,Python.h并且收到超过 100 个关于不明确符号的错误。

我试图将它们分开include到不同的命名空间,但它产生了许多其他错误。

包含时也会发生同样的情况windows.h

所有错误看起来像:

D:\proj\Pin\source\include\pin\gen\types_core.TLH(67): error C2872: 'INT32' : ambiguous symbol could be 'C:\Program Files (x86)\Windows Kits\8.0\Include\shared\basetsd.h(72) : int INT32 or D:\proj\pin\Pin\source\include\pin\gen\types_foundation.TLH(88) : LEVEL_BASE::INT32' D:\proj\pin\Pin\source\include\pin\gen\types_core.TLH(81) : see reference to class template instantiation 'LEVEL_CORE::INDEX<dummy>' being compiled

你知道这个问题的快速解决方案吗?

谢谢!

4

1 回答 1

-1

如果要使用 Windows.h 标头,则必须在其自己的命名空间中使用它:

namespace WINDOWS
{
    #include <Windows.h>
}

然后通过使用它的命名空间来使用 Windows.h 中的一些东西:

WINDOWS::DWORD foo; // use WINDOWS namespace

如果您不为 windows.h 标头使用命名空间,您将与来自 PIN 本身的各种标头发生大量名称冲突。

编辑

只记得在手册的某处提到过(请参阅:“Pin 和 Windows 之间的冲突”):

https://software.intel.com/sites/landingpage/pintool/docs/65163/Pin/html/index.html#RESTRICTIONS

于 2015-01-25T01:15:04.607 回答