2017-06-04 27 views
1

我跟着make_vcxproj注释来创建Visual C++项目。我也执行了:使用Visual C++构建mongodb源代码时出错

scons generated-sources 

创建错过的文件。在蒙戈source code的主分支,当我建立这个项目我获得以下错误:

Severity Code Description Project File Line Suppression State Error C2370 'kuint16max': redefinition; different storage class (compiling source file src\third_party\s2\base\strtoint.cc) mongod D:\Open Source\mongo\src\third_party\gperftools-2.5\src\base\basictypes.h 74

似乎也有kuint16max一个在integral_types.h,另一个在basictypes.h两个全球性的定义。以下是主要部分basictypes.h文件(错误相关的):

const uint16 kuint16max = ( (uint16) 0xFFFF); 
const uint32 kuint32max = ( (uint32) 0xFFFFFFFF); 
const uint64 kuint64max = ((((uint64) kuint32max) << 32) | kuint32max); 

const int8 kint8max = ( ( int8) 0x7F); 
const int16 kint16max = ( (int16) 0x7FFF); 
const int32 kint32max = ( (int32) 0x7FFFFFFF); 
const int64 kint64max = ((((int64) kint32max) << 32) | kuint32max); 

const int8 kint8min = ( ( int8) 0x80); 
const int16 kint16min = ( (int16) 0x8000); 
const int32 kint32min = ( (int32) 0x80000000); 
const int64 kint64min = ((((uint64) kint32min) << 32) | 0); 

integral_types.h

static const uint8 kuint8max = ((uint8) 0xFF); 
static const uint16 kuint16max = ((uint16) 0xFFFF); 
static const uint32 kuint32max = ((uint32) 0xFFFFFFFF); 
static const uint64 kuint64max = ((uint64) GG_LONGLONG(0xFFFFFFFFFFFFFFFF)); 
static const int8 kint8min = (( int8) 0x80); 
static const int8 kint8max = (( int8) 0x7F); 
static const int16 kint16min = ((int16) 0x8000); 
static const int16 kint16max = ((int16) 0x7FFF); 
static const int32 kint32min = ((int32) 0x80000000); 
static const int32 kint32max = ((int32) 0x7FFFFFFF); 
static const int64 kint64min = ((int64) GG_LONGLONG(0x8000000000000000)); 
static const int64 kint64max = ((int64) GG_LONGLONG(0x7FFFFFFFFFFFFFFF)); 

当我改变的Git分支稳定分支,错误仍然存​​在。所以我认为问题在于我的构建。

回答

1

不要使用vcproj东西从源代码构建MongoDB。它旨在由少数Windows开发人员进行内部尽力而为的使用。请按照building.md中的构建说明进行操作,并在命令行上使用SCons进行构建。一个好的构建Windows命令行主分支可能看起来像:

python ./buildscripts/scons.py --release -j12 --dynamic-windows --win-version-min=ws08r2 core

但做调整为适合您的本地系统的-j值。另请注意,building.md文件略有过时(修复程序目前处于代码审阅状态),您将需要VS2015 Update 3以及twohotfixes