Windows编译出的Botan库运行起来崩溃问题的解决

1.      Botan 是一个 C++ 的加密算法库,支持 AES, DES, SHA-1, RSA, DSA, Diffie-Hellman 等多种算法,支持 X.509 认证以及CRLs 和 PKCS #10 

2.      ubuntu下安装botan库很简单,到软件中心里搜libbotan,把一个libbotan和另外一个诸如libbotanxxx-dev的库安装就可以了,其它系统请参阅软件文档。

3.      也可以把Botan的源代码下载下来,然后,进行编译。

4.          网上给的Botan编译方法为:安装python,然后,进行配置后进行编译。WindowsLinux都进行相关编译的工具的设置,然后,编译和执行成。这个过程,其实是生成makefile,然后nmake后生成的。(参考http://blog.csdn.net/zklth/article/details/7191009

5.      通过网上的方法,我编译出了64位的版本为1_8Botan库;但是,该库在程中运行中崩溃。同时,用于该库没有符号表(pdb)文件,无法进行调试和定位。

生成的makefile,lib库和dll库

6.      首先想到的方法是:让程序生成pdb文件;于是,修改makefile;发现,没有生成pdb文件。

7.      于是,想到的办法是:用把程序添加到VS里,然后,进行编译后生成。

8.      新建一个工程,起名为botan,然后,用notepad+ 打开原来的makefile文件。在Windows上,建立一个新筛选器HEADERS:通过添加现有项的方法把src\algo_factory\algo_cache.h添加到工程里。

然后,把Headers里的文件,全部拷出去到notepad+的另一个文件里,然后,用notepad+打开相应的botan的botan.vcxproj的文件,发现src\algo_factory\algo_cache.h在某个Item里,形如:

<ClIncludeInclude="..\..\src\algo_factory\algo_cache.h" />。

然后,把这系列文件的前面加上 <ClIncludeInclude="..\..\   , 后面加上 " />  。然后,把这一系列文件,加到Item下。

附:1)VS的vcxproj 实际上是XML形式;加到XML的相应节点,即可把工程加上去。

    2)可以用notepad+ 的替换功能,实一批同种形式的字符的格式转换。

9.      把其他文件,也加到库上面。把程序改为动态库类型,然后,用VS进行编译。

10.  编译过程中,发现编译 不正确, 报如下错误 错误 2 error C2491:xx: 不允许 dllimport静态数据成员 的定义。经查询,发现错误为:需要加上宏DLL_EXPORT,同时把BOTAN_DLL 定义为 __declspec(dllexport)。单击工程的属性,“C/C++”----> “预处理器”---à“预处理器定义”。在里面加上两行:DLL_EXPORT; BOTAN_DLL=__declspec(dllexport)。

11.  继续编译,发现,有两个timer.cpp文件。把check下的timer.cpp去掉。同时,把其他出错的属于check的cpp给去掉。

12.  编译成功。把相应库放到运行程序中,这次,运行,成功,没有崩溃。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值