Qt编译和使用freetype矢量字库方法

在之前讲过QT中利用freetype提取字库生成图片的方法:

#QT利用freetype提取字库图片_qt freetype-CSDN博客文章浏览阅读1.2k次。这是某个项目中要用到的片段,结合上一篇文章#QT从字体名获取字库文件路径使用// 保存位图int SaveBitmapToFile(HBITMAP hBitmap, LPSTR lpFileName){HDC hDC;int iBits;WORD wBitCount; DWORD dwPaletteSize=0,dwBmBitsSize,dwDIBSize_qt freetypehttps://blog.csdn.net/wangningyu/article/details/109743104

QT在场景中利用freetype实现独立的文字绘制子类QxFreeTypeTextItem-CSDN博客QT在场景中利用freetype实现独立的文字绘制子类QxFreeTypeTextItem,继上一章节讲过qt中如何编译freetype。https://blog.csdn.net/wangningyu/article/details/138927884

忘记说如何编译了,通常我们会将freetype编译成一个动态库,这样可以供以后的qt其他工程直接调用,免得每次COPY一堆比较麻烦,下面将告诉大家如何编译成DLL库:

1、先下载freetype源码,当前版本是2.13.2最新的:

The FreeType Project - Browse /freetype2 at SourceForge.net

2、按照下面的步骤,新建一个dll工程:

这里的名称将是你以后DLL库的名称:

这里根据自己的需要勾选:

后面都是默认下一步完成即可,下载后解压至QT DLL工程目录

此时只需要打开.pro文件,COPY下面这一份即可:

cpp 复制代码
QT -= gui

TEMPLATE = lib
DEFINES += FREETYPE_LIBRARY

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    freetype.cpp

HEADERS += \
    FreeType_global.h \
    freetype.h

# 这里开始COPY即可
DEFINES += FT2_BUILD_LIBRARY
DEFINES += WIN32
DEFINES += _LIB
DEFINES += _CRT_SECURE_NO_WARNINGS
DEFINES += FT_DEBUG_LEVEL_ERROR
DEFINES += FT_DEBUG_LEVEL_TRACE

INCLUDEPATH += \
    freetype-2.13.2/include/

# 这里需要注意下载存放的路径freetype-2.13.2与.pro文件同级目录
SOURCES += \
    freetype-2.13.2/src/ftdebug.c \
    freetype-2.13.2/src/ftsystem.c \
    freetype-2.13.2/src/autofit/autofit.c \
    freetype-2.13.2/src/base/ftbase.c \
    freetype-2.13.2/src/base/ftbbox.c \
    freetype-2.13.2/src/base/ftbdf.c \
    freetype-2.13.2/src/base/ftbitmap.c \
    freetype-2.13.2/src/base/ftcid.c \
    freetype-2.13.2/src/base/ftfstype.c \
    freetype-2.13.2/src/base/ftgasp.c \
    freetype-2.13.2/src/base/ftglyph.c \
    freetype-2.13.2/src/base/ftgxval.c \
    freetype-2.13.2/src/base/ftinit.c \
    freetype-2.13.2/src/base/ftmm.c \
    freetype-2.13.2/src/base/ftotval.c \
    freetype-2.13.2/src/base/ftpatent.c \
    freetype-2.13.2/src/base/ftpfr.c \
    freetype-2.13.2/src/base/ftstroke.c \
    freetype-2.13.2/src/base/ftsynth.c \
    freetype-2.13.2/src/base/fttype1.c \
    freetype-2.13.2/src/base/ftwinfnt.c \
    freetype-2.13.2/src/bdf/bdf.c \
    freetype-2.13.2/src/cache/ftcache.c \
    freetype-2.13.2/src/cff/cff.c \
    freetype-2.13.2/src/cid/type1cid.c \
    freetype-2.13.2/src/dlg/dlgwrap.c \
    freetype-2.13.2/src/gzip/ftgzip.c \
    freetype-2.13.2/src/lzw/ftlzw.c \
    freetype-2.13.2/src/pcf/pcf.c \
    freetype-2.13.2/src/pfr/pfr.c \
    freetype-2.13.2/src/psaux/psaux.c \
    freetype-2.13.2/src/pshinter/pshinter.c \
    freetype-2.13.2/src/psnames/psmodule.c \
    freetype-2.13.2/src/raster/raster.c \
    freetype-2.13.2/src/sfnt\sfnt.c \
    freetype-2.13.2/src/smooth\smooth.c \
    freetype-2.13.2/src/sdf\sdf.c \
    freetype-2.13.2/src/svg\svg.c \
    freetype-2.13.2/src/truetype/truetype.c \
    freetype-2.13.2/src/type1/type1.c \
    freetype-2.13.2/src/type42/type42.c \
    freetype-2.13.2/src/winfonts/winfnt.c \

# 这里复制结束

# Default rules for deployment.
unix {
    target.path = /usr/lib
}
!isEmpty(target.path): INSTALLS += target

这里基本上就编译成功,没什么问题了

release目录会生成FreeType.dll与FreeType.o文件,即可供其他程序调用。

下面是其他调用freetype工程的pro文件可以参考一下:

cpp 复制代码
QT += gui

TEMPLATE = lib
DEFINES += MTFREETYPE_LIBRARY
CONFIG += dll
CONFIG += c++11
DESTDIR = ../Bin

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000
# disables all the APIs deprecated before Qt 6.0.0

# 这里需要注意根据你的实际情况来设定
INCLUDEPATH += \
    ../FreeType/freetype-2.13.2/include/

SOURCES += \
    mtfreetype.cpp \

HEADERS += \
    MTFreeType_global.h \
    mtfreetype.h \

# 这里需要链接你的.o文件所在路径
LIBS += -L../Bin/ -lFreeType

LIBS += -luser32
LIBS += -lgdi32



# Default rules for deployment.
unix {
    target.path = /usr/lib
}
!isEmpty(target.path): INSTALLS += target
相关推荐
iqay4 分钟前
【C语言】填空题/程序填空题1
c语言·开发语言·数据结构·c++·算法·c#
程序猿编码4 分钟前
自定义命令执行器:C++中命令封装的深度探索(C/C++实现)
linux·c语言·c++·网络安全·shell·命令行
wen__xvn2 小时前
每日一题洛谷B3865 [GESP202309 二级] 小杨的 X 字矩阵c++
c++·算法·矩阵
makabaka_T_T2 小时前
25寒假算法刷题 | Day1 | LeetCode 240. 搜索二维矩阵 II,148. 排序链表
数据结构·c++·算法·leetcode·链表·矩阵
学游戏开发的2 小时前
UE求职Demo开发日志#19 给物品找图标,实现装备增加属性,背包栏UI显示装备
c++·笔记·游戏引擎·unreal engine
m0_699659562 小时前
QT知识点复习
开发语言·qt
c-c-developer3 小时前
C++ Primer 标准库类型string
开发语言·c++
宁静致远20214 小时前
Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成
c++·vscode·ubuntu
Bluesonli4 小时前
第 2 天:创建你的第一个 UE5 C++ 项目!
c++·学习·ue5·虚幻·虚幻引擎·unreal engine
比特在路上4 小时前
蓝桥杯之c++入门(四)【循环】
c++·职场和发展·蓝桥杯