编译Cairo + pixman0.29.1+libpng 1513+zlib127 on VS2012

最近,想做一下多绘图引擎的支持,所以需要研究一下时下流行的绘图引擎,为了在C#中使用Cairo,所以用git下来编译一下。

首先建立跟目录 Cairo,当然,你可以随便起名字,比如CairoBuild。

先下载每个项目,cairo和pixman用git下就可以了,libpng和zlib在网上搜一下应该都能找到。下载的libpng是lpng1513,需要改名为libpng

将libpng和zlib解压,并放到Cario目录下,

这时的目录结构式

Cairo

    cairo    

    pixman

    libpng

    zlib


Cairo的编译工作首先是 libpng和zlib的编译,

zlib的编译,用VS2012打开zlib目录下的 contrib\vstudio\vc10中的zlibvc.sln

在 zlibvc.def中将VERSON去掉否则会报错的,之后在zlibvc和testzlib项目的属性->连接器->命令行中 的其他选项加入 /SAFESEH:NO 

整体编译(release)一下就通过了。


libpng的编译:下载的libpng是lpng1513,改一下名字为libpng,用VS2012打开 libpng根目录下projects\vstudio中的vstudio.sln

打开后,会发现有一个zlib项目,将zlib目录下的相应文件加入进去,再编译,否则会提示找不到文件的。并在libpng pngtest pngvalid中属性页的包含目录中加入zlib的根目录

以保证能够找到zlib.h文件,之后将属性中常规下的目标文件名改为$(ProjectName),原来的是$(ProjectName)15,将pngtest和pngvalid中的链接器的输入中的附加依赖项的libpng15也改为libpng,其实这两个和libpng的生成关系不大。然后将Debug改为release Library,编译一下,通过。


之后就是编译pixman和cairo了,

这两个项目的编译需要使用MozillaBuild工具编译,下载MozillaBuild工具并安装,打开其安装目录X:\mozilla-build下,找到对应的.bat文件,由于这里使用VS2012所以是start-msvc11.bat文件,先不要着急双击,先使用记事本或者Notepad++编辑一下,

在其中加入对应的INCLUDE和LIB,这里需要注意一下,有时候在编译pixman的时候会提示找不到Config.h文件,这个文件在mozilla-build中moztools\include里,我加入的内容如下

set INCLUDE=%INCLUDE%;%MOZ_TOOLS%\include

加入编译目录
rem Root of cairo building
set CAIROROOT=E:\DrawSoftware\cairo

加入zlib和libpng的lib文件,当然你也可以再cairo目录下建一个lib文件夹,然后,把LIB=%LIB%%CAIROROOT%\cairo\lib文件夹,并把zlib.lib和libpng.lib拷到此文件夹中
rem Add zlib and libpng to LIB
set LIB=%LIB%;%CAIROROOT%\zlib\contrib\vstudio\vc10\x86\ZlibStatRelease;%CAIROROOT%\libpng\projects\vstudio\Release Library

添加zlib和libpng的位置
rem Add zlib and libpng to INCLUDE
set INCLUDE=%INCLUDE%;%CAIROROOT%\zlib;%CAIROROOT%\libpng

加入cairo及其相关目录
rem Add cairo, boilerplate, and pixman to INCLUDE
set INCLUDE=%INCLUDE%;%CAIROROOT%\cairo\src;%CAIROROOT%\cairo\boilerplate;%CAIROROOT\pixman\pixman

保存之后,找到cairo目录下的build文件夹,用notepad打开其中的Makefile.win32.common文件,找到zdll.lib,将其改为zlib.lib,并将目录只想对应的.lib文件夹,如果你向前面说的那样,建了个lib目录,将libpng.lib和zlib.lib放到cairo的lib中的话这里需要将CAIRO_LIBS +=  $(top_builddir)/../../libpng.lib改为CAIRO_LIBS +=  $(top_builddir)/lib/libpng.lib,将CAIRO_LIBS += $(top_builddir)/../../zlib.lib改为CAIRO_LIBS += $(top_builddir)/lib/zlib.lib,这样就能够找到这两个lib文件了,如果没有添加lib文件件,就需要定位到相应lib的生成位置上

双击打开start-msvc11.bat文件,cd 到pixman/pixman下,make -f Makefile.win32 "CFG=release" pixman就编译好了,应该不会出错,如果是config.h没找到,可以加一下moztools\include目录。

最后 cd到 cairo目录下,也执行make -f Makefile.win32 "CFG=release" 经过5、6分钟,就编好了,视机器情况不同时间也不一样。如果只编译dll可以

make -f Makefile.win32  dynamic "CFG=release" 。一般会在cairo中src的release目录中看到 cairo.dll文件,调用这个文件的使用需要使用

根目录下 cairo-version.h
src/cairo-features.h
src/cairo.h
src/cairo-deprecated.h
src/cairo-win32.h
src/cairo-script.h
src/cairo-ps.h
src/cairo-pdf.h
src/cairo-svg.h
src/release/cairo.dll
src/release/cairo-static.lib

另外在使用C#调用时,采用DllImport方式  并将其加入cdecl调用方式,

[DllImport(DllName,CallingConvention=CallingConvention.Cdecl)],否则签名会有问题,当然你也可以在cairo.h的导出中加入 __stdcall,呵呵


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值