compilación libharu-RELEASE_2_3_0

  1. Descargue la última versión de libharu: http://libharu.org/, publíquela en el sitio web, puede descargar la última versión, mi versión es 2_3_0;
  2. La compilación de libharu requiere zlib y libpng, así que también descargué del sitio web oficial correspondiente: zlib ( http://www.zlib.net/ ), libpng ( http://www.libpng.org/pub/png/libpng .html )
  3. Primero compile zlib, hay readme.txt en zlib-1.2.11 \ contrib \ vstudio, que dice "Este directorio contiene proyectos que compilan zlib y minizip usando Microsoft Visual C ++ 9.0 / 10.0. No necesita construir estos proyectos usted mismo . Puede descargar los binarios desde: http://www.winimage.com/zLibDll ". Bueno, descargaré esta biblioteca directamente, pero no encontré esta biblioteca. . . . En este sitio web, compilemos honestamente. Quien lo encuentre, cuéntemelo y evite volver a compilar para otros detrás.
  4. Por supuesto, el archivo readme.txt en zlib-1.2.11 \ contrib \ vstudio también nos enseña cómo compilar esta biblioteca. Yo uso VS2010, así que consulte "Open contrib \ vstudio \ vc10 \ zlibvc" en readme.txt .sln con Microsoft Visual C ++ 2010 "
  5. Después de la apertura, hay muchos proyectos, solo se compila el zlibvc que necesitamos y se generan zlibwapi.dll y zlibwapi.lib después de la compilación
  6. Luego compile libpng, libpng también depende de zlib, primero abra vstudio.sln en lpng1637 \ projects \ vstudio
  7. Después de compilar, se encontraron algunos errores, como se muestra en la Figura 7. Resulta que el código fuente de zlib debe importarse y compilarse juntos, de lo contrario no se puede encontrar el archivo correspondiente.
  8. Regrese a la compilación anterior de zlib, y el resultado final es un archivo dll. Aquí, intente generar un archivo lib. Figura 8 Cambie el tipo de configuración a una biblioteca estática. Al cambiarlo, encontré que zlibstat parece ser el configuración de una biblioteca estática. . . . Vergonzoso, busqué en Internet y resultó que este es un proyecto para compilar bibliotecas estáticas
  9. Compile este proyecto zlibstat y generelo. Zlibvc es una biblioteca dinámica zlibstat es una biblioteca estática testzlib prueba biblioteca estática, testzlibdll prueba biblioteca dinámica
  10. Bien, volvamos a libpng. ¿Es posible usar la biblioteca estática zib directamente para libpng? Además, utilicé proyectos de 32 bits durante la compilación anterior. Lea el archivo Léame de este proyecto lpng1637 \ projects \ vstudio. Hay una oración como "Si no desea utilizar la DLL y prefiere la vinculación estática, puede elegir la configuración de la biblioteca de versiones". (Esto es del compilador Seleccione la biblioteca de lanzamiento en los cuadros Depurar y Liberar debajo de la barra de menú). Esto se construye con una biblioteca de tiempo de ejecución no estándar, la versión "MultiThreaded". Cuando construya su aplicación, debe compilarse con esta opción (/ MT), de lo contrario, no se compilará (si tiene suerte) o se bloqueará (si no es así). Consulte el archivo de ADVERTENCIA que se distribuye con el archivo README.
  11. Si este es el caso, entonces elegimos ir a la biblioteca Release, compilar y echar un vistazo, se indica que no se pueden encontrar los archivos relacionados con zlib, como se muestra en el resultado de la compilación de la Figura 11. Por supuesto, encontramos el include adicional ruta en la rutina C / C ++ y ver que hay zlib A variable $ (ZLibSrcDir); ¡tan familiar! Ah, hay esta definición de carpeta en un archivo mencionado en ReadMe, que es zlib.props en el mismo directorio que readme.txt, abra zlib.props, y hay una frase <ZLibSrcDir> .. \ .. \ .. \ .. \ zlib </ZLibSrcDir>, y al principio de este documento, dice "Es posible que deba editar este archivo para actualizar la ubicación del código fuente de zlib".
  12. Bien, cambiemos esta ruta. Veamos dónde estamos usando actualmente zlib. La ruta es ls ../../../zlib-1.2.11/ Luego, completaremos esta ruta. Cámbielo, preste atención al barra aquí, escríbalo al revés, guarde este archivo, luego salga de VS, luego abra vstudio.sln en este directorio y vuelva a compilar
  13. Parece que hay un error durante la compilación, oh, porque estamos compilando libpng, la ruta de este proyecto será más profunda. . . Entonces, la ruta es <ZLibSrcDir> .. \ .. \ .. \ .. \ zlib-1.2.11 </ZLibSrcDir>, no es necesario apagar el compilador, recompilar directamente, éxito, Figura 13
  14. Hasta ahora hemos compilado zlib.lib y libgpng16.lib, ¿por qué hay 16 adicionales? Debido a que hay un 16 adicional después del nombre del archivo de destino al configurar, Figura 14
  15. Ok, ahora compila libharu, ingresa al directorio D: \ T70 \ PDF_Pro_3 \ libharu-RELEASE_2_3_0 \ script y abre el Makefile. Este archivo contiene la ruta para definir las carpetas libpng y zlib. Modifica la ruta PNG_PREFIX = ../../ lpng1637 ZLIB_PREFIX = ../../zlib-1.2.11
  16. Abra cmd.exe en el modo administrador, ingrese al directorio y compílelo con nmake, y parece que "nmake" no es un comando interno o externo, ni es un programa ejecutable o un archivo por lotes. Como uso el cmd.exe del sistema, abro el cmd de VS
  17. Después de abrir, compilar, descubrí que se informó un error, no se pudo encontrar zlib.h, y después de leerlo, encontré que la barra era incorrecta. Corríjala en la Figura 17.2, y luego compile y vea, supongo que habrá un error que no se puede encontrar lib, porque aquí Los nombres de las bibliotecas son zlib.lib y libpng.lib, pase lo que pase, compile primero
  18. Después de compilar, se informó un error y no se pudo encontrar zlib.h. Lo busqué y encontré que zlib.h está directamente en el directorio zlib-1.2.11, y el archivo Makefile.msvc no incluye directamente zlib-1.2 .11 Esta carpeta, la segunda es la carpeta de inclusión debajo del archivo incluido. Ahora que lo pienso, hay un artículo que dice " Para facilitar la compilación de Libharu, almacene los archivos de encabezado y las bibliotecas estáticas de zlib y libpng por separado en sus respectivas carpetas include y lib". Bien, echemos un vistazo
  19. Finalmente se cambió a esto. La Figura 19 finalmente no reportó el error de que no se pudo encontrar zlib.h. Observe la causa del error. Debería ser que todos los archivos .h de zlib deben copiarse en el directorio de inclusión. De manera similar, para libpng, cópielo en el directorio correspondiente.
  20. Bien, finalmente la compilación es exitosa, hay un libhpdf.lib en el directorio libharu-RELEASE_2_3_0
  21. Ven, compila nuestro ejemplo
  22. Cree un programa de consola WIN32 pdf_pro3_demo,
  23. Cree un directorio de inclusión en el proyecto para colocar los archivos de encabezado de libharu, copie la inclusión de la carpeta libharu, luego agregue los elementos existentes en el correo de inclusión en el proyecto win32, agregue todos los archivos .h, y luego agregue la biblioteca, cree una carpeta lib en el proyecto, deje que libhpdf.lib copie
  24. Agregue este directorio lib, directorio de biblioteca, en el lugar en la Figura 24, ($ (ProjectDir) representa el directorio donde se encuentra xxx.vcxproj) aquí es solo para encontrar la biblioteca aquí, pero qué biblioteca buscar, diré a continuación
  25. Vinculador -> Entrada -> Dependencias adicionales escribe libhpdf.lib, no te preocupes por otras cosas, compílalo y échale un vistazo, está compilado. . .
  26. Intento encontrar una demostración, me sale un error, encontré que la carpeta inlude se olvidó de incluirla, y luego compila hpdf_config.h no puedo encontrarla, el principio. también algunos archivos de encabezado a continuación, también copiar. una mirada. . -_- ||, solo hay uno. . .
  27. Después de copiar, también debe "agregar elementos existentes" en el archivo de encabezado. . . La recompilación aún genera el error "IntelliSense: No se puede abrir el archivo de origen" hpdf_config.h "", y luego agregue el directorio de inclusión adicional en la Figura 27 y agréguelo en las propiedades del proyecto = "Propiedades de configuración =" C / C ++ = "General =" Directorio de inclusión adicional: $ (ProjectDir)
  28. En compilación, se informa un error, como si lo hubiera encontrado antes
  29. Cuando pensé en compilar libharu antes, ni la biblioteca zlib ni libpng se escribieron para luchar por ello. Agregue aquí y luego vuelva a compilar D: \ T70 \ PDF_Pro_3 \ libharu-RELEASE_2_3_0> nmake -clean script \ Makefile.msvc, luego D: \ T70 \ PDF_Pro_3 \ libharu-RELEASE_2_3_0> nmake -all script \ Makefile.msvc
  30. O no. . . . .
  31. Olvídelo, como antes, agrega LIBHPDF_HAVE_NOZLIB a hpdf_config.hy recompila libharu
  32. Después de eso, se puede compilar, y descubrí que está bien poner el libhpdf.lib compilado en el directorio del proyecto, en lugar de ponerlo en el directorio lib bajo el directorio del proyecto. Significa que la ruta que establecí anteriormente es un un poco problemático, así que ignóralo.
  33. Otra pregunta, esta vez no necesito volver a usar esta oración #pragma comment (lib, "libhpdf.lib")
  34. Ahora se genera el .pdf. Suspiro de alivio, ve inmediatamente a estudiar el problema de codificación de Rusia
  35. La codificación de Rusia usa la función HPDF_UseUTFEncodings, pero al usarla, encuentro que hay un error que dice que no existe tal función (error 14 error LNK2019: símbolo externo no resuelto _HPDF_UseUTFEncodings, este símbolo se hace referencia en la función _main), ver en Makefile. msvc A continuación, debe agregar src \ hpdf_encoder_utf.obj después de OBJS = \ This \ Debido a que no se compiló en la biblioteca antes, no se puede encontrar el símbolo de esta función

Supongo que te gusta

Origin blog.csdn.net/yangkunhenry/article/details/103398257
Recomendado
Clasificación