mingw 可用的包含uuid_generate uuid_create的libuuid

由于种种原因,需要在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 这两个库



你可能感兴趣的:(uuid,MinGW)