Simple Generación de GUID en C

Me siento como GUID/UUID preguntas que se han hecho a la muerte aquí, pero me parece que no puede encontrar exactamente lo que yo estoy buscando. Necesito una función que va a generar V4 Guid en C, es decir, algo que es esencialmente compatibile con el Guid.NewGuid de C#.

Esto tiene que funcionar en Windows (XP, Server 2003/8, etc) y 3 diferentes distribuciones de Unix (AIX, Sun y HP).

He visto algunos de la especificación de los papeles blancos, algunos que incluso tienen algunos ejemplos de implementaciones, pero no siempre parece ser un problema con la debida números aleatorios, o solo generan V1 o V3 Uuid, etc. El página de la wikipedia para Uuid me señaló a un par de librerías de samples, pero estos son demasiado pesado para lo que estoy tratando de lograr aquí.

Me siento muy fuertemente que podría implementar algo de mí, pero no quiero perder tiempo de reinventar la rueda si hay algo realmente sencillo y ligero, yo sólo podía caer en. Alguien tiene algo o sabe de algo?

Gracias.

OriginalEl autor Morinar | 2009-09-03

2 Kommentare

  1. 10

    CoCreateGuid es estándar para todas las formas de Windows. Estándar de Linux es libuuid, que es estándar en todas las versiones de Linux y debe ser ligero. No sé de cualquier biblioteca que va a trabajar para Windows y Unix. Creo que una #if rama para Windows y Linux es apropiado aquí.

    ¿Usted realmente necesita para distribuir el mismo binario en ambos sistemas? O simplemente compilar la misma fuente? Usted pregunta no especifica. Si usted realmente necesita para distribuir el mismo binario, entonces usted probablemente puede obtener el código fuente para libuuid y se compila en su binario, lo que hará de la cruz-plataforma.
    Esta es independiente de la plataforma. Envolver bajo una interfaz común que algunos OS Api específicas. Al final, usted tendrá que compilar la aplicación en cada categoría de sistema operativo, de modo que el momento de la compilación del interruptor para la selección de la correcta aplicación de la misma interfaz debe hacer el trabajo. Algunas buenas bibliotecas sé usar este «truco». Ver boost::hilo, por ejemplo.
    Solo compile la misma fuente… un #si la rama es perfectamente aceptable. Es una garantía de que mi distribuciones de Unix se han libuuid? Yo realmente no tienen la capacidad para obligar a todos nuestros clientes para instalarlo o incluso para embalar correctamente.
    Morinar: siempre se puede enlazar estáticamente a libuuid.
    Cuando he publicado mi primer comentario, la única respuesta fue: CoCreateGuid Si agregó más a ella, o ASÍ lo había algún tipo de problema, no estoy seguro de. Claro, me quitó mi primer comentario después de su plena respuesta estaba allí, y ahora va a pedir disculpas por la premura de mi respuesta inicial.

    OriginalEl autor JSBձոգչ

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea