vs2015编译glib2.5.0

发布时间 2023-11-07 14:15:23作者: 一夜求风

1、首先安装vs2015,以及下载一个glib2.50的源码包

2、编译glib的问题

①首先解决提示找不到libintl.h的问题

需要编译安装libintl模块,可通过下载到glib仓库下载gettext-runtime-dev_0.18.1.1-1_win32包,里面提供了libintl.h和intl.lib

②解决找不到pcre.h的问题

到官网下载pcre安装包,版本为pcre-8.36,然后是使用cmake进行配置,再打开vs2015进行编译,注意下载部分版本无法正常编译,测试使用8.36是可以正常编译通过

但是重新构建glib时,提示找不到__imp_pcre_free等错误,经过网上查找资料,需要增加宏定义#define PCRE_STATIC,对应vs2015需要预处理定义那增加PCRE_STATIC。

③对应提示d:\code\glib-2.50.0\gio\gsocket.c(913): error C4819: 该文件包含不能在当前代码页(936)中表示的字符

文件编码存在问题,将这个代码文件使用notepad++打开,编码-》选择使用Utf-8-BOM编码,然后保存解决。

3、编译gobject问题

①解决提示找不到libffi.h的问题

首先到https://github.com/winlibs/libffi下载源码包,这边成功下载了版本libffi-master,然后到D:\code\libffi-master\win32\vc14_x86下打开sln项目文件,点击生成项目,项目顺利生成,但是在编译时依然提示找不到ffitarget.h

通过到源码包中查找这个文件,发现对应于编译环境在D:\code\libffi-master\src\x86目录下有对应的ffitarget.h文件,于是在include目录中增加路径D:\code\libffi-master\src\x86,成功编译通过。

3、编译gio问题

①解决提示找不到zlib.h的问题

首先到下载zlib源码包,然后是使用cmake进行配置,再打开vs2015进行编译。

编译出来的时zlibd.lib,重新编译gio还是提示找不到zlib1.lib,于是将需要的zlib1.lib改成zlibd.lib编译通过。