windows下編譯skia dll

來源:互聯網
上載者:User

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日新月異,所以還是有點問題的,不過可以參考一下。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.