在各个技术博客搜索相关资料后,终于将freeType的源码用keil工程编译通过,这里记录一下步骤和遇到的问题。

  因为网上的资料都是旧版本freeType的工程,这里博主使用的是freeType2.9.1版本,下载地址

  下面是简单的步骤

  1、添加源文件:

  

  其中,FreeTypeInc可以不添加,主要是为了方便阅读修改源文件。

  2、添加对应的头文件路径,(在移植过程中发现:许多没有添加到工程的.C文件会通过#include  xxx.C的方式调用,因此可以参考官方源码的doc文档查看.C之间的依赖关系,来决定需要包含哪些文件夹)。这里需要包含的文件夹路径如下:

  

  到这里工程源文件添加完成,首次编译会报错,错误信息如下:

  gui\freeType2.9.1\src\base\ftsystem.c(30): error:  #13: expected a file name

   #include FT_INTERNAL_DEBUG_H

  在新版本freeType中,有一些头文件是以宏的形式被包含的,这里的错误提示这个宏没有被定义,通过sourceInsight 找到定义的文件然后在ft2build.h中定义头文件后,还是出错。

  遇到这个问题后,重新认识了include的功能,就是将其被包含的文件全部在包含位置展开,所以头文件的包含是作为局部代码全部拷贝的。

  最终问题的解决是在stackFlow上找到灵感:

  在ft2build.h的最前面添加如下代码:

 #ifndef FT2_BUILD_LIBRARY
#define FT2_BUILD_LIBRARY
#endif

  编译通过,到此,移植工作有了部分进展,也给自己增加了些许信心,后续工作是导入TFT字库,获取设定大小的字号,并将对应范围内的汉字的位图信息以文件的格式存在,方便在系统运行时直接使用。

使用这种方案是处于对性能的考虑,因为是嵌入式系统,字库的渲染严重影响系统的实时性,折中的办法就是提前将字体完成渲染之后预先存储在系统的flash当中,在显示字体的时候直接使用。如果大家还有什么好的方案,希望能指点一二。

  

freeType移植总结①——使用keil编译freeType2库的更多相关文章

  1. 手把手图文并茂教你用Android Studio编译FFmpeg库并移植

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52661331 之前曾写过一篇&l ...

  2. Win7 64位 VS2015及MinGW环境编译矢量库agg-2.5和cairo-1.14.6

    书接上文,昨天装了MinGW,主要原因之一是要用到MSYS,所以顺手把FFMPEG又编译了一遍. 回到主题,其实我是想编译矢量库,因为最近要学习一些计算几何算法,所以找个方便的2D画图库就很重要. 说 ...

  3. php追加编译GD库

    一.准备工作. 安裝 GD 前需要安裝 jpegsrc.v7.tar.gz, libpng-1.6.17.tar.gz, zlib-1.2.8.tar.gz, freetype-2.5.5.tar.g ...

  4. Win7 VS2015及MinGW环境编译矢量库agg-2.5和cairo-1.14.6

    书接上文,昨天装了MinGW,主要原因之一是要用到MSYS,所以顺手把FFMPEG又编译了一遍. 回到主题,其实我是想编译矢量库,因为最近要学习一些计算几何算法,所以找个方便的2D画图库就很重要. 说 ...

  5. 编译gd库出错

    不知道大家有没有遇到在  X64 RedHat5 或者 RedHat4 下.编译安装PHP环境的时候. 安装了libxml,zlib,jpeg,libpng,freetype,libart_lgpl, ...

  6. MFC编译Freetype2.3.7

    从http://www.freetype.org下载源代码. FreeType2库源码包中包含多种环境与编译器下的make文件,其中还包含vc的项目文件. 我用的是VC,所以首先找到VC环境的项目文件 ...

  7. Keil中LIB库的作用、生成与调用

    LIB库有什么用,一个简单的例子就是Silicon Labs为C8051F单片机USB提供的USBXpress LIB库了,如USB发送数据.接收数据等,都是通用性很强的函数,但因为保密的原因,这个函 ...

  8. netsnmp编译动态库

    .编译动态库 将写完的snmp代理程序编译生成动态库 gcc -c -fpic telnetConfig.c -o telnetConfig.o -I/usr/local/net-snmp/inclu ...

  9. 配置自己的OpenGL库,glew、freeglut库编译,库冲突解决(附OpenGL Demo程序)

    平台:Windows7,Visual C++ 2010 1. 引言 实验室的一个项目,用到OpenGL进行实时绘制,还用到一些其他的库,一个困扰我很久的问题就是编译时遇到的各种符号未定义,符号重定义之 ...

随机推荐

  1. SQL Server扩展事件的使用ring_buffer target时“丢失”事件的原因分析以及ring_buffer target潜在的问题

    事情起因: 排查SQL Server上的死锁问题,一开始想到的就是扩展事件, 第一种方案,开profile守株待兔吧,显得太low了,至于profile的变种trace吧,垂垂老矣,也一直没怎么用过. ...

  2. 【转】How to initialize a two-dimensional array in Python?

    [wrong way:] m=[[element] * numcols] * numrows for example: >>> m=[['a'] *3] * 2>>> ...

  3. Interpreting the genomic landscape of speciation: a road map for finding barriers to gene flow

    1.摘要 物种形成是种群间生殖隔离的进化过程,是连续的.复杂的,涉及多个相互作用的屏障.在完成之前,这一过程的影响会随着基因组的不同而变化,并可能导致具有分化和分化波峰和波谷的异质性基因组景观.当基因 ...

  4. linux查看硬件详细信息dmidecode

    [root@zabbix_server src]# dmidecode|more # dmidecode 2.12 SMBIOS 2.7 present. structures occupying b ...

  5. pandas的简单使用

    pandas可以对数据进行整理分析 因为要对excel中的源数据进行分组和处理,所以想到用pandas来处理.试用过确实比自己去读写快捷很多 (实际pandas底层也是用xlrd,xlwt两个第三方包 ...

  6. mysql修改联合主键

    参考 https://blog.csdn.net/BockSong/article/details/80933477 alter table TABNAME drop primary key; alt ...

  7. 关于Collections.sort()排序方法的源码探索

    /**下面在自己代码中使用Collections.sort()方法去比较Student对象,通过在自己写的类里面通过匿名内部类实现Comparator接口,这个接口是让你自己实现比较器的规则*/ // ...

  8. sqlserver 收缩数据库/文件

    /******************************/ 1.右键-属性-选项-简单模式 2.右键-任务-收缩-文件 3.右键-任务-收缩-数据库 /********************* ...

  9. nodejs 开启http服务器

    1.首先安装node.js windows地址:https://nodejs.org/dist/v10.15.3/node-v10.15.3-x64.msi 配置成功的标志: 若没成功,也有可能是没有 ...

  10. linux上安装MongoDB副本集(带keyfile安全认证以及用户权限)

    搭建前准备 MongoDB版本:4.0 主要参考搭建MongoDB副本集网站:https://www.jianshu.com/p/f021f1f3c60b 安装之前最好先确定一下几点: 防火墙关闭 M ...