以前我曾在 Dev-C++ 下编译过 libHaru 的 Demo,Dev-C++ 当然是很好的 C/C++ IDE,只是其携带的 mingw gcc g++ 没有更新过。最新的 mingw gcc g++ 稳定版最好的当然就直接从官方网站 http://www.mingw.org/ 下载和安装。
1. 下载安装 mingw (
http://www.mingw.org/)
下载地址:
http://sourceforge.net/projects/mingw/files/
下载得到一个文件 MinGW-5.1.6.exe, 把这个文件放到某个目录 (例如 e:\mingw_download), 双击 MinGW-5.1.6.exe, 选 核心文件 和 gcc/g++ , 下载并安装。
下载时间不长,大概15分钟。安装缺省是在 C:\mingw
2. 设置 C:\mingw\bin 路径
把 C:\mingw\bin 加入到 环境变量 的 系统变量 的 Path
完成后,打开一个命令行窗口, 输入: gcc --version 和 g++ --version
如果有版本信息显示,就说明安装和配置均完成。
3.下载 zlib 和 libpng 源文件
zlib 下载地址:
http://www.zlib.net/zlib-1.2.3.tar.gz
下载后,解压到 e:\zlib
libpng 下载地址:
http://sourceforge.net/projects/libpng/files/00-libpng-stable/1.2.41/libpng-1.2.41.tar.gz/download
下载后解压,把里面的目录 libpng-1.2.37-src (藏的很深啊:解压目录\src\libpng\1.2.37) 挖出来,放到 e:\ 并改目录名为 libpng (就是源文件放于 e:\libpng)
4. 编译 zlib 和 libpng
(4.1) 编译 zlib
打开命令行窗口,到 e:\zlib 目录下,输入以下命令:
copy win32\makefile.gcc makefile.gcc
mingw32-make -f makefile.gcc
完成后在该目录就新生成一个 libz.a 文件。
把 libz.a 文件复制到 C:\mingw\lib
把 zlib.h 和 zconf.h 两文件复制到 C:\mingw\include
(4.2) 编译 libpng
打开命令行窗口,到 e:\libpng 目录下,输入以下命令:
copy scripts\makefile.gcc
mingw32-make -f makefile.gcc
完成后在该目录新生成一个 libpng.a 文件。
把 libpng.a 文件复制到 C:\mingw\lib
把 png.h 和 pngconf.h 两文件复制到 C:\mingw\include
5. 下载 libHaru 源文件和编译
(5.1) 下载 libHaru 源文件
下载地址:
http://libharu.org/wiki/Downloads
最新源文件:
http://libharu.org/files/libharu-2.1.0.tar.gz
下载后把得到的 libharu-2.1.0.tar.gz 文件解压,把里面的 libharu-2.1.0 目录复制到 e:\ 并改目录名为 libharu (就是把 libharu 的源文件放于 e:\libharu)
(5.2) 编译 libHaru
打开一个命令行,到 e:\libharu 目录下,输入以下命令:
copy script\makefile.mingw
mingw32-make -f makefile.mingw
完成后在该目录新生成一个 libhpdf.a 文件。
把 libhpdf.a 文件复制到 C:\mingw\lib
把 include\hpdf.h 和 include\hpdf_conf.h 两文件复制到 C:\mingw\include
把 win32\include\hpdf_config.h 文件复制到 C:\mingw\include
注意了:必须要复制这个 hpdf_config.h 文件,否知会出错,如下:
(5.3) 编译 Demo
在源文件有一个目录 demo 包含多个实例 c 文件,现在就可以编译这些样板了。
本来 makefile.mingw 已经包含了编译 demo 的选项,用以下命令来编译:
mingw32-make demo -f makefile.mingw
却出错,只编译了一个c文件就停止了,原因是其路径的设定不对。我没有修改这个 makefile.mingw 文件,而是把其中编译demo的配置,放到一个 批处理(.bat)文件,如下:
gcc -o demo/encoding_list.exe -Iinclude -O2 -Wall -mno-cygwin demo/encoding_list.c -Lwin32/mingw -L. -lhpdf -lpng -lz
gcc -o demo/font_demo.exe -Iinclude -O2 -Wall -mno-cygwin demo/font_demo.c -Lwin32/mingw -L. -lhpdf -lpng -lz
gcc -o demo/text_demo.exe -Iinclude -O2 -Wall -mno-cygwin demo/text_demo.c demo/grid_sheet.c -Lwin32/mingw -L. -lhpdf -lpng -lz
运行这个批处理就可以完成编译,生成 exe 文件。运行这些 exe 就可以产生 PDF 文件。
注意了,以上的 encoding_list.exe 必须要在 demo 目录下运行,因为这个目录下的 \type1 子目录存放了所用到的字库(font),见源文件:
如果找不到字库,就出错(ERROR: error_no=1017, detail_no=2),如下:
我可是花了2天时间才知道问题所在,呵呵,惭愧。还是需要好好读书,学看源代码啊。
6. CJK 问题
这次把 libHaru 编译就是为了学习了解生成包含中文的PDF的过程和配置,最终的目的是要把 libHaru 编译为 swc 放到 Flex /AIR 里动态生成含中文的 PDF。
(6.1) demo 的示例 ttfont_demo_jp.c
该例子是生成含日文字符的PDF, 结合 libHaru 文档:
http://libharu.org/wiki/Documentation/API/Font
http://libharu.org/wiki/Documentation/Fonts
http://libharu.org/wiki/Documentation/Encodings
可以知道,其源文件中:
/* declaration for using Japanese encoding. */
HPDF_UseJPEncodings (pdf);
启用日文编码。而这一行读取字库:
detail_font = HPDF_GetFont (pdf, detail_font_name, "90msp-RKSJ-H");
而这里,就设定字符大小,和输出到 PDF:
HPDF_Page_SetFontAndSize (page, detail_font, 10);
HPDF_Page_ShowText (page, SAMP_TXT);
输出内容来自变量 SAMP_TXT.
从网上搜索到极少的使用中文字库的例子片段,其中一个例子使用繁体中文的如下:
HPDF_Font fcp950;
.......
HPDF_UseCNTEncodings(pdf);
HPDF_UseCNTFonts(pdf);
//--- Use Built-in Chinese font ---
fcp950=HPDF_GetFont (pdf, "MingLiU","ETen-B5-H");
//--- now you can export chinese text ---
而使用ttf字库的例子,如下:
font_name = malloc(10 * sizeof(font_name));
font_name = HPDF_LoadTTFontFromFile(pdf, "timeSS.ttf", HPDF_TRUE);
font = HPDF_GetFont (pdf, font_name, NULL);
HPDF_Page_BeginText (page);
/* font = HPDF_GetFont (pdf, "Times-Roman", NULL); */
HPDF_Page_SetFontAndSize (page, font, 12);
- 大小: 33.5 KB
- 大小: 19.3 KB
- 大小: 34.8 KB
- 大小: 4.8 KB
分享到:
相关推荐
总结来说,OpenSSL 1.0.1e通过MinGW编译静态库是一项重要的工程实践,它使得开发者能够在Windows环境下创建不依赖外部库的独立程序,但同时也需要注意静态库的优缺点,根据项目需求来选择合适的链接方式。
本教程将详细讲解如何在Qt MinGW环境下集成和使用已经编译好的GDAL库。 首先,GDAL是一个开源的库,它提供了多种格式的地理空间数据读写能力,如遥感影像、矢量数据等。它支持的数据格式众多,包括常见的如TIFF、...
本文主要介绍如何使用mingw编译OSG插件,特别是在面对特定格式如JPEG图片处理时的方法。对于那些习惯使用Visual Studio (VS) 或其他IDE的人来说,本文提供了一种不同于主流编译方式的新途径—使用mingw进行编译。这...
cryptopp crypto++ 5.6.5在 MinGW_64 编译的静态库。源文件在visual studio下编译没有问题,但没有提供MinGW_64 的编译环境,需要修改部分源代码才能编译通过
标题"libevent-2.0.22-stable在windows环境下使用mingw编译"指的是一个关于使用MinGW编译工具在Windows操作系统上构建libevent库的2.0.22稳定版本的过程。libevent是一个开源的、跨平台的事件通知库,它提供了一种...
在本文中,我们将深入探讨如何在Windows环境下使用Qt与MinGW编译Point Cloud Library (PCL) 及其依赖库,包括boost、eigen、flann、qhull和VTK。这一过程对于开发者来说至关重要,因为能够确保在Qt环境中直接运行PCL...
同时,由于GDAL本身依赖于许多其他库(如libxml2、proj、geos等),因此在编译GDAL时,也需要确保这些依赖项已正确安装和配置。 总的来说,通过Mingw32和gcc 4.7.2编译GDAL 1.10,可以为Qt开发者提供一种在Windows...
mingw的静态编译版,不需要dll了!
静态编译意味着在编译应用程序时,将所有依赖的库(如Qt库)合并到最终的可执行文件中,这样生成的程序在运行时不再需要外部的动态链接库(DLLs)。这对于那些需要分发或在不可预知环境运行的应用程序来说非常有用,...
QT5.15.2的32bit MinGW静态编译库,编译命令“configure.bat -static -release -confirm-license -opensource -opengl desktop -platform win32-g++ -prefix "D:\Qt\5.15.2\mingw81_32_static" -sql-sqlite -sql-...
cryptopp crypto++ 8.2(2020.3最新版)在 MinGW_64 编译的静态库。源文件在visual studio下编译没有问题,但没有提供MinGW_64的编译环境,需要修改部分源代码才能编译通过
通过以上步骤,你已经成功地在 Mingw GCC 环境下编译了 VTK 静态库和获得了头文件。这使得你能够在 Windows 平台上快速开发基于 VTK 的图像处理应用程序,而无需自行处理复杂的库依赖问题。如果你遇到任何问题,可以...
如果想节省时间,这是我在Windows下直接编译好的gdal1.11.5,使用的msys2 +mingw64方式编译的gdal1.11.5,可以直接在QT(mingw)版本开发工具内使用。下载后直接解压,将bin文件添加到系统环境变量,在.pro文件中...
MinGW是GCC(GNU Compiler Collection)在Windows上的一个移植版本,它提供了与Linux环境下类似的开发工具集,包括C、C++、Fortran等语言的编译器。MinGW4.9.2是该编译器的一个较旧但稳定版本,对于不追求最新特性的...
对于QtMinGW 5.9.1,这是一个特定的Qt版本,针对MinGW编译器进行了优化,以确保在Windows环境下运行的效率和稳定性。 在描述中提到,编译后的库文件和示例已经包含在提供的压缩包中。"TestQtVTK8"可能是一个包含...
使用 mingw 编译出 sqlite3.dll 和 sqlite3.exe 2. lsqlite3 (也是本压缩包的原型) http://lua.sqlite.org 从下面网址下载 Version 0.8 http://lua.sqlite.org/index.cgi/zip/lsqlite3_svn08.zip?uuid=svn_8 ...
1. `.a` 文件:这是静态链接库文件,例如 `libjpeg.a`,用于在编译时将JPEG库的功能直接链接到你的应用程序中。这样,生成的可执行文件将包含libjpeg的所有代码,不需要在运行时依赖额外的DLL文件。 2. `.dll` 文件...
MinGW64编译好的可以用于Win7_VS平台下X64环境C++工程的ARPACK的dll&lib;库,适用于x64 debug/release mode.调用函数以及求解特征值特征向量的实例程序见本人博客及相关资源,提供下载.
选择Qt来做工具的UI,但是因为安装的是mingw版本的Qt,之前在VS中使用的lib静态库这一下就派不上用场了,网上搜索到可以用工具把 lib 文件转换成 .a 文件,但是自己尝试后没有生成成功,加之这种转换也有各种局限性...
标题中的“cryptopp840 Windows mingw 编译可用”指的是一个关于Cryptopp库的特定版本840,在Windows操作系统环境下,使用MinGW编译器成功编译并可供使用的资源。Cryptopp是一个C++类库,提供了各种加密算法和密码学...