Windows 7 Ultimate 64bit,Visual Studio 2010。
PBC库是基于linux环境下编写的,但自0.5.10版本开始,便可以在windows环境下编译。要编译PBC库,首先必须安装MinGW,利用其中的Msys两个软件模拟linux下的编译。
http://crypto.stanford.edu/pbc/
1. 安装MinGW编译程序。下载安装管理器mingw-get-setup.ex,网址:http://sourceforge.net/projects/mingw/files/,安装好安装管理器后,将基本选项进行安装应用。
安装后配置环境变量,例如将D:\MinGW\bin写入path中,如图:
2. 安装gmp库。在http://gmplib.org/ 上下载gmp库,进入MinGW的目录,进入,依次进入msys、1.0目录,双击msys.bat,模拟linux环境,如图:
输入gcc –v,测试gcc安装是否成功,如图:
进入gmp目录后输入:
./configure CPPFLAGS="-D__USE_MINGW_ANSI_STDIO=0"--enable-static --disable-shared
make
make install
其中,CPPFLAGS="-D__USE_MINGW_ANSI_STDIO=0"在此后编译PBC静态库时才需要,若只编译PBC动态库,则不需要此步,--enable-static --disable-shared可根据编译的是静态库还是动态库作相应的改变。
在这里我们编译GMP静态库,编译成功后,取出libgmp.a和gmp.h两个文件,我是在D盘下新建了两个文件夹,在d:/lib文件夹下放libgmp.a,在d:/include文件夹下放gmp.h。
3. 在http://crypto.stanford.edu/pbc/ 上下载PBC库的源代码,在msys中,输入:
./configureLDFLAGS="-Ld:/lib -lgmp"CPPFLAGS="-Id:/include" --enable-static --disable-shared
make
make install
这里我们编译的是静态库,得到libpbc.a(若需要编译动态库,可将./configure那步后面改为--disable-static --enable-shared,则可得到libpbc-1.dll)
4. 将libpbc.a、libgmp.a、libgcc.a(在MinGW安装文件夹下)三个文件拷贝到VS2010工程下,并使用#pragma comment(lib,"xxx.lib")加载,当然也可设置工程属性加载。在包含头文件后(pbc相关、gmp.h)编译链接工程,若报错"无法解析_snprintf",应该在提示的文件(GMP和PBC库的源码文件)里找到snprintf,并在其前面加下划线变成_snprintf,然后重新编译GMP和PBC库,将得到新的libpbc.a、libgmp.a拷贝到VS工程下,再次编译链接运行。或者将文件夹中的libmingwex.a也加载入工程,即可解决问题。