windows下编译skia dll

来源:互联网 发布:家谱编辑软件 编辑:程序博客网 时间:2024/06/05 10:27

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#defineSK_GAMMA_SRGB#defineSK_GAMMA_APPLY_TO_A8#defineSK_ALLOW_STATIC_GLOBAL_INITIALIZERS 1#defineSK_SCALAR_IS_FLOAT#defineSK_CAN_USE_FLOAT#defineSK_SUPPORT_GPU 1#defineSK_BUILD_FOR_WIN32#defineSK_IGNORE_STDINT_DOT_H#define_CRT_SECURE_NO_WARNINGS#defineGR_GL_FUNCTION_TYPE __stdcall#defineSK_DEBUG#defineGR_DEBUG 1#defineSK_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日新月异,所以还是有点问题的,不过可以参考一下。


原创粉丝点击