在各个技术博客搜索相关资料后,终于将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. flex布局-css

    1.html <div id="parent"> <div id="child1"></div>  <div id=& ...

  2. 后台编辑器组件VmEditor

    <template> <div class="wrap"> <div class="vm-editor"> <div ...

  3. 移动端响应式布局--你不知道的CSS3.0媒体查询,解决rem部分情况下无法适配的场景

    媒体查询作为响应式布局的方法之一,实际项目中用途也很广.但是你真的知道怎么用吗? 例如,下面匹配 iphone6/7/8 屏幕 @media screen and (max-width: 375px) ...

  4. OO电梯调度

    告别了三次奇妙无比的求导作业之后,我们就开始搭建一部自己的电梯了.相信我们不同同学的电梯运行方式肯定各具特色吧,但值得肯定的是,在艰苦的走完了三次电梯逐步改进的作业之后,我们的电梯在正常情况下应该是可 ...

  5. PHP拦截器之__set()与__get()的理解与使用方法

    “一般来说,总是把类的属性定义为private,这更符合现实的逻辑.   但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值 ...

  6. 从零开始学spring cloud(七) -------- Spring Cloud OpenFegin

    一.OpenFegin 介绍 Feign是一个声明性的Web服务客户端. 它使编写Web服务客户端变得更容易. 要使用Feign,请创建一个界面并对其进行注释. 它具有可插入的注释支持,包括Feign ...

  7. Codeforces Round #552 (Div. 3) D题

    题目网站:http://codeforces.com/contest/1154/problem/D 题目大意:给出n个数(0或1),还有a , b, a是蓄电池容量,b是电池容量,数为1时蓄电池可以充 ...

  8. web配置详细解释

    <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual S ...

  9. Android设备直接运行java项目?还杀不死?

    思路:拿到dex可执行文件,使用android执行 使用idea创建java类库,写相关逻辑代码 使用idea导出该类库jar包 使用android dx工具 将jar文件转换为dex可执行文件 dx ...

  10. 12.Redis运维点

    12.Redis运维点12.1 Linux配置优化12.1.1 内存分配控制12.1.2 swappiness12.1.3 THP12.1.4 OOM killer12.1.5 使用NTP12.1.6 ...