freeType移植总结①——使用keil编译freeType2库
在各个技术博客搜索相关资料后,终于将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库的更多相关文章
- 手把手图文并茂教你用Android Studio编译FFmpeg库并移植
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52661331 之前曾写过一篇&l ...
- Win7 64位 VS2015及MinGW环境编译矢量库agg-2.5和cairo-1.14.6
书接上文,昨天装了MinGW,主要原因之一是要用到MSYS,所以顺手把FFMPEG又编译了一遍. 回到主题,其实我是想编译矢量库,因为最近要学习一些计算几何算法,所以找个方便的2D画图库就很重要. 说 ...
- 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 ...
- Win7 VS2015及MinGW环境编译矢量库agg-2.5和cairo-1.14.6
书接上文,昨天装了MinGW,主要原因之一是要用到MSYS,所以顺手把FFMPEG又编译了一遍. 回到主题,其实我是想编译矢量库,因为最近要学习一些计算几何算法,所以找个方便的2D画图库就很重要. 说 ...
- 编译gd库出错
不知道大家有没有遇到在 X64 RedHat5 或者 RedHat4 下.编译安装PHP环境的时候. 安装了libxml,zlib,jpeg,libpng,freetype,libart_lgpl, ...
- MFC编译Freetype2.3.7
从http://www.freetype.org下载源代码. FreeType2库源码包中包含多种环境与编译器下的make文件,其中还包含vc的项目文件. 我用的是VC,所以首先找到VC环境的项目文件 ...
- Keil中LIB库的作用、生成与调用
LIB库有什么用,一个简单的例子就是Silicon Labs为C8051F单片机USB提供的USBXpress LIB库了,如USB发送数据.接收数据等,都是通用性很强的函数,但因为保密的原因,这个函 ...
- netsnmp编译动态库
.编译动态库 将写完的snmp代理程序编译生成动态库 gcc -c -fpic telnetConfig.c -o telnetConfig.o -I/usr/local/net-snmp/inclu ...
- 配置自己的OpenGL库,glew、freeglut库编译,库冲突解决(附OpenGL Demo程序)
平台:Windows7,Visual C++ 2010 1. 引言 实验室的一个项目,用到OpenGL进行实时绘制,还用到一些其他的库,一个困扰我很久的问题就是编译时遇到的各种符号未定义,符号重定义之 ...
随机推荐
- 【博客开篇】服务器配置:Windows2008R2+PHP5.6+SQLServer2008(X64)
现下流行LAMP,如果选择Windows服务器,那么一般都会选择IIS+Asp.Net+SQL Server(可以简称为WINS),这些配置起来,都是非常方便的. 但也有一些特殊的服务器配置,例如:W ...
- react学习2
props,state与render函数的关系 react,父组件的state中的变量改变,则相应的render函数也会执行,返回新的视图,同时父组件的子组件通过props获取父组件的state的变量 ...
- Django框架的探索
django框架的路由 django2 路由支持正则匹配,如: re_path(r'^category/(?P<category_id>\d+)/$',CourseCategoryView ...
- c语言:第一次作业,分支,顺序结构
1.本章学习总结(2分) 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 学了几节课的c语言了,因为没自学的原因,跟不上进度.对于c语言现在挺有兴趣的,愿意去花时间去弥补 ...
- Loadrunner进行HTTPS协议性能测试
1.最简单办法就是在脚本前面加上:web_set_sockets_option("SSL_VERSION","TLS"),一般能解决HTTPS协议的请求问题,无 ...
- React Native笔记
① 做UI快 ② 还是有很多限制,不如原生Native ③ 入门简单,能让前端快速开发App ④ iOS&Android大部分代码通用 ⑤ code-push能做热更新,但是用不好依旧坑
- 关于逻辑回归是否线性?sigmoid
from :https://www.zhihu.com/question/29385169/answer/44177582 逻辑回归的模型引入了sigmoid函数映射,是非线性模型,但本质上又是一个线 ...
- 关于感受野 (Receptive field) 你该知道的事
Receptive field 可中译为“感受野”,是卷积神经网络中非常重要的概念之一. 我个人最早看到这个词的描述是在 2012 年 Krizhevsky 的 paper 中就有提到过,当时是各种不 ...
- ExpandableListView解析JSON数据
效果图: 说明:刚开始使用这个控件我花费了3天的时间,但是一直都没有达到预期的效果,要么就是直接全部不显示,要么就是数据累加 ...
- C++——Vector
#include "opencv2/objdetect.hpp" #include "opencv2/videoio.hpp" #include "o ...