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,然后,进行配置后进行编译。Windows和Linux都进行相关编译的工具的设置,然后,编译和执行成。这个过程,其实是生成makefile,然后nmake后生成的。(参考http://blog.csdn.net/zklth/article/details/7191009)
5. 通过网上的方法,我编译出了64位的版本为1_8的Botan库;但是,该库在程中运行中崩溃。同时,用于该库没有符号表(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. 编译成功。把相应库放到运行程序中,这次,运行,成功,没有崩溃。