windows下编译skia dll

1.正常流程编译skia.

2.skia.sln当中的core项目,改成DLL项目,再添加引用项目

3.更改include/core/skpreconfig.h,添加

#pragma warning(disable:4251)
#define SKIA_DLL
#define WIN32
#define SKIA_IMPLEMENTATION 1

第一行的防止出现EXPORT类引用非EXPORT出现的错误,

之后三行主要作用是将SKIA_API定义为__declspec(dllexport)这样就能够导出。

4.编译可以产生skia_core.dll,

5.使用该DLL

但是需要注意的是,如果要使用这个DLL,则不仅需要链接skia_core.lib(导出库),也需要更改skpreconfig.h当中的内容,因为

#define SKIA_IMPLEMENTATION 1 会导致SK_API为__declspec(dllexport),但是实际上我们需要的是__declspec(dllimport),因此

skpreconfig.h应该改为

#pragma warning(disable:4251)
#define SKIA_DLL
#define WIN32

#if !defined(SKIA_IMPLEMENTATION)
#define SKIA_IMPLEMENTATION 1
#endif

另外使用的时候需要在头文件当中添加

#define SKIA_IMPLEMENTATION 0

最后,preprocessor可以直接复制生成core项目的preprocessor。

6.例子(debug版本的)

#pragma once

#define	SK_GAMMA_SRGB
#define	SK_GAMMA_APPLY_TO_A8
#define	SK_ALLOW_STATIC_GLOBAL_INITIALIZERS 1
#define	SK_SCALAR_IS_FLOAT
#define	SK_CAN_USE_FLOAT
#define	SK_SUPPORT_GPU 1
#define	SK_BUILD_FOR_WIN32
#define	SK_IGNORE_STDINT_DOT_H
#define	_CRT_SECURE_NO_WARNINGS
#define	GR_GL_FUNCTION_TYPE __stdcall
#define	SK_DEBUG
#define	GR_DEBUG 1
#define	SK_DEVELOPER 1 
#define    SKIA_IMPLEMENTATION 0

#include <SkUtils.h>
#include <SkPaintFlagsDrawFilter.h>
#include <SkBlurMaskFilter.h>
#include <SkEmbossMaskFilter.h>
#include <SkPaint.h>
#include <SkStream.h>
#include <SkTypeface.h>
#include <SkDevice.h>
#include <SkImageDecoder.h>
#include <SkImageEncoder.h>
#include <SkCanvas.h>
#include <SkDashPathEffect.h>
//#include <platform_device.h>
//#include <platform_canvas.h>
//#include <bitmap_platform_device.h>


7.其他

另外git-hub上边也有skia_dll的项目,地址https://github.com/vosvos/skia-win32-dll,并且这个项目还把chrome的skia_ext项目给整合进去了,不过最大的问题是太老了,已经一年多没有更新了,实际skia日新月异,所以还是有点问题的,不过可以参考一下。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值