1.zookeeper源码包中,首先打开zookeeper.vcxproj, 去除第一行<xml前的乱码(bom头无法识别,导致project无法在visual studio中正确加载);
2.win32版本直接编译即可;
3.创建x64项目,可以复制win32的项目配置信息;然后进行修改;增加一个预编译定义WIN64,修改
fetch_and_add 的代码;因为x64不支持使用_asm,所以进行如下修改
int32_t fetch_and_add(volatile int32_t* operand, int incr){#ifndef WIN32 int32_t result; asm __volatile__( "lock xaddl %0,%1\n" : "=r"(result), "=m"(*(int *)operand) : "0"(incr) : "memory"); return result;#else volatile int32_t result= *operand; InterlockedAdd((volatile LONG*)operand,incr); return result; #endif}