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



我按照构建说明下载了最新的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"?

不幸的是,VC2005不太支持标准C++来编译llvm/crang。我们在过去看到了许多问题。因此,建议使用VC2008/VC2010。

相关内容

  • 没有找到相关文章

最新更新