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