无法在Windows XP上构建Clang 3.0,未定义标识符“PSRWLOCK”。为什么?

时间:2012-02-16 04:10:56

标签: windows llvm clang

我按照构建说明下载最新的LLVM3.0和Clang3.0源代码,最后得到VS解决方案文件“LLVM.sln”和所有.vcproj文件。

然后我构建了libClang,但是在构建项目“LLVMSupport”时出现了一些错误: 错误C2065:“PSRWLOCK”:未定义的标识符

位于RWMutex.cpp的问题包括“Windows / RWMutex.inc”。 在“RWMutex.inc”文件中,我注意到一段代码:

// Windows has slim read-writer lock support on Vista and higher, so we
// will attempt to load the APIs.  If they exist, we will use them, and
// if not, we will fall back on critical sections.  When we drop support
// for XP, we can stop lazy-loading these APIs and just use them directly.
#if defined(__MINGW32__)
// Taken from WinNT.h
typedef struct _RTL_SRWLOCK {
    PVOID Ptr;
} RTL_SRWLOCK, *PRTL_SRWLOCK;

// Taken from WinBase.h
typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK;
#endif
...
这是什么意思?即使我使用的是Microsoft C ++编译器,我应该定义“ MINGW32 ”吗?

1 个答案:

答案 0 :(得分:1)

不幸的是,VC2005不能很好地支持标准C ++来编译llvm / clang。我们过去看到了很多问题。因此,建议使用VC2008 / VC2010代替。