已在Win10编译Skia库,如何基于Skia开发编译C++程序?
Windows 10下基于已编译Skia开发C++程序分步指南
前期准备核对
先确认你编译Skia得到的核心文件路径,避免后续配置出错:
- 编译产物目录:默认在Skia源码根目录下的
out/Release(或out/Debug)路径,核心库文件为skia.lib(静态编译)或skia.dll+skia.lib(动态编译) - 头文件目录:Skia源码根目录下的
include文件夹,所有依赖头文件都存放在此处
步骤1:创建匹配配置的C++项目
- 打开和你编译Skia时版本一致的Visual Studio(推荐2019及以上),新建「空项目(C++)」
- 右键项目名称选择「属性」,将顶部的配置、平台参数调整为和你编译Skia的参数完全一致:比如你编译的是Release x64版本的Skia,这里就选
Release+x64,避免后续出现兼容错误
步骤2:配置项目依赖路径
配置头文件搜索路径
在属性页依次打开「C/C++」→「常规」→「附加包含目录」,添加Skia源码下include文件夹的绝对路径,点击确认。
配置库文件搜索路径
在属性页依次打开「链接器」→「常规」→「附加库目录」,添加你编译出的Skia库所在目录(比如D:\skia\out\Release)的绝对路径,点击确认。
配置链接依赖项
在属性页依次打开「链接器」→「输入」→「附加依赖项」,添加skia.lib,点击确认。
步骤3:添加必须的预编译宏
这一步是新手最容易漏掉的配置,漏加会直接导致编译失败:
在属性页依次打开「C/C++」→「预处理器」→「预处理器定义」,添加以下宏:
- 所有编译模式都需要加:
UNICODE - 静态编译Skia需要加:
SK_STATIC - 编译Skia时开启了OpenGL支持需要加:
SK_GL、SK_INCLUDE_GL_HEADERS
步骤4:编写测试代码验证
在项目中新建main.cpp文件,写入以下最简测试代码,功能是生成一张带红色圆形的PNG图片:
#include "SkSurface.h" #include "SkCanvas.h" #include "SkImage.h" #include "SkPNGEncoder.h" #include "SkPaint.h" #include "SkStream.h" int main() { // 创建400*400的光栅画布 auto surface = SkSurfaces::Raster(SkImageInfo::MakeN32Premul(400, 400)); SkCanvas* canvas = surface->getCanvas(); // 填充白色背景 canvas->clear(SK_ColorWHITE); // 定义抗锯齿红色画笔 SkPaint paint; paint.setColor(SK_ColorRED); paint.setAntiAlias(true); // 在画布中心画半径100的圆 canvas->drawCircle(200, 200, 100, paint); // 导出图片到本地 auto image = surface->makeImageSnapshot(); SkFILEWStream output_file("test_output.png"); SkPngEncoder::Encode(&output_file, image.get(), {}); return 0; }
步骤5:编译运行与常见问题排查
- 报错找不到头文件:检查附加包含目录的路径是否正确,有没有多写/少写文件夹层级
- 链接器报错找不到
skia.lib:检查附加库目录路径是否正确,附加依赖项是否已添加skia.lib - 报错符号不匹配/运行时库冲突:检查项目的配置(Release/Debug、x86/x64、运行时库版本)和编译Skia的配置是否完全一致
- 运行时提示找不到dll:如果是动态编译的Skia,将
skia.dll复制到生成的exe同目录下即可
内容的提问来源于stack exchange,提问作者tartigrade
相关产品推荐
相关产品推荐

