由于种种原因,需要在mingw下用uuid_generate, mingw 自带的libuuid 没有uuid_generate, 于是开始疯狂google
最后在这里找到了一个可以用的版本
http://sourceforge.net/p/libuuidmingw/
其中,文件gen_uuid.c需要做一些修改,修改后的文件如下
/*
* gen_uuid.c
*
* Created on: 2011/02/13
* Author: psi
*/
/**
* See also: http://linux.die.net/man/3/uuid_generate
*/
#include "uuid_inner.h"
void uuid_generate(uuid_t out){
UuidCreateNil((UUID*)out);
UuidCreate((UUID*)out);
}
void uuid_generate_random(uuid_t out){
char* buf = (char *) out;
int i;
for(i=0;i<UUID_T_LENGTH;i++){
buf[i] = (rand() >> 20) & 0xff;
}
UUID* uuid = out;
//see also original libuuid source.
unsigned short* clock_seq = (unsigned short*) uuid->Data4;
*clock_seq = (*clock_seq & 0x3FFF) | 0x8000;
unsigned short* time_hi_and_version = (unsigned short*) uuid->Data3;
*time_hi_and_version = (*time_hi_and_version & 0x0FFF) | 0x4000;
}
//TODO: Should we implement these functions?
void uuid_generate_time(uuid_t out){
UuidCreateNil((UUID*)out);
UuidCreate((UUID*)out);
}
如果在msys中直接autoconf会报错,正确的编译方法为
libtoolize --force
aclocal
autoheader
automake --force-missing --add-missing
autoconf
./configure
make
这个库实际上是封装了winapi中的UuidCreate 等函数,因此在使用时,需要额外链接 librpcdce4.a librpcrt4.a 这两个库