Saturday 18 November 2017

Leveldb Binary Options


Parece que los valores devueltos por leveldbiterkey y leveldbitervalue no son cadenas NULL-terminated correctas. Por lo tanto, la solución sucia sería el uso Sin embargo, IMO es mejor copiar esos valores de acuerdo a su longitud y luego usarlos. Como se puede ver en github / google / leveldb / blob / master / db / c. ccL197 leveldbget crea una rebanada de longitud apropiada (Slice (key, keylen) en L205) y devuelve la copia de la clave (CopyString en L208). He comprobado su código con valgrind y hay algunas fugas de memoria con opciones. Debe liberarlos manualmente (por ejemplo, leveldbwriteoptionsdestroy para woptions). Leveldbget results (read) también debe ser liberado. Sa 09 Februar 2013 Por Uli Khler Recientemente I8217m desesperadamente tratando de entrar en LLVM y una serie de tutoriales sobre cómo utilizar LLVM con C / C se acerca en breve. Como I8217m usando LevelDB en muchos de mis proyectos I8217d como una forma de generar un LLVM IR (representación intermedia) de la fuente LevelDB C - podría vincular un programa LLVM con el binario nativo, pero con el fin de beneficiarse de LLVMs características supongo que utilizando IRs para tantas dependencias como sea posible es el camino a seguir. Por lo general, hay dos maneras de ir: Por lo general, tienden a utilizar clang para tareas LLVM, porque incluso con colorgcc y algunas mejoras recientes en la generación de mensajes de error gcc Prefiero los mensajes de error clang, incluso si tengo mucho más experiencia con mensajes de error gcc. Además, el g con el backend de LLVM parece tener algunos errores, incluyendo interpretar - emit-llvm como - e - m - i 8230, además de versiones de distribución recientes don8217t funcionan demasiado bien con el complemento de oro de LLVM y ha resultado difícil decir a GCC confiablemente Que usará llvm-ld como enlazador. Edit: Parece que llvm-gcc está obsoleto desde LLVM 3.0 Una vez que tenga los comandos g para crear una biblioteca o programa, it8217s bastante fácil de convertir el Makefile a clang, si está satisfecho con sólo enumerar todas las invocaciones clang / LLVM en el Todos hacen objetivo. Aquí está el archivo llvm. mk para LevelDB para Linux con Snappy (compile usando make - f llvm. mk): Tenga en cuenta la invocación de llvm-link para fusionar los archivos IR (extensión. bc). Llvm-ld es un enlazador que vincula archivos ejecutables con bibliotecas, mientras que llvm-link fusiona archivos IR - no son los mismos. El resultado es libleveldb. bc, un archivo IR de 576 kiB, en comparación con los 688 kiB libleveldb. a (git revision 514c943a8e9ce1b06c55ae5e47008f6b0854b36, 6 feb 2013). Libleveldb. so.1.9 no obstante es solamente 392 kiB grande. Categorías Blogroll Orgullosamente alimentado por pelican. Que tiene grandes ventajas de python. Not que conozco, pero lo he estado usando en mi proyecto C. Si está familiarizado con C, entonces puede crear su propio wrapper de CLI (no debería ser mucho problema), construirlo como un DLL y luego puede cargar esa DLL en su proyecto C como cualquier otra referencia de ensamblado. Hay un puerto de windows para leveldb y es un poco complicado conseguirlo en Visual Studio, pero si tienes problemas puedo subir mi solución de Visual Studio 2010 (que es 75 de la batalla) con todo el set-up y listo para (Excepto el contenedor de CLI). Puedo ponerlo en github o algo, que realmente estoy planeando hacer de todos modos, pero la enfermedad lo acelera para usted. Como he dicho, he estado usando ese enfoque para mi proyecto C y funciona muy bien. Sin embargo, si usted tiene requisitos realmente altos del funcionamiento, entonces recomendaría batching encima del trabajo para reducir el P / Invokes. Ejemplo Tenga en cuenta que no he compilado este código, pero solo lo publico como un ejemplo. El archivo de encabezado podría tener este aspecto: Su archivo cpp va a ser en la línea de: Esto debería llevarlo en la dirección correcta. Tenga en cuenta que diferentes datos pueden tener codificación diferente, así que me siento como la forma más segura de pasar los datos entre su código no administrado y administrado es utilizar punteros y un UnmanagedMemoryStream. Aquí es cómo obtendría los datos asociados con una clave en C: De nuevo, no he compilado o ejecutar el código. Pero debe conseguir que en el camino correcto.

No comments:

Post a Comment