vs2010编译OVALInterpreter

win7编译OVALInterpreter遇到的主要问题是编译它所用到的第三方库,首先是pcre,这个没有遇到什么问题,略过,其次是libgcrypt,这是一个GNU环境下的软件包,在windows下编译需要使用mingw,由于此前从未使用过,所以遇到了不少麻烦,

1,下载mingw,位于sourceforge上,只提供在线安装包,网速差的时候一个接着一个的Download Error,于是找来离线完整安装包

2,libgcrypt依赖libgpg-error,    于是下载了libgpg-error-1.10 和libgcrypt-1.5.0 (只这两个版本编译成功)

3,把libgpg-error复制到mingw 的home目录,并进入该目录,执行./autogen.sh,之后按照提示一步一步输入指令

4,make 的时候停留在protomo:XXXXXXiso...utf8这一行,几次重试都是同样的结果,无法继续,后来在google上多番查找,问题出在iconv.exe这个文件上,找到了两个解决方法,patch文件和修改protomo文件,patch文件下回来之后不知道怎么用,于是修改protomo文件,把 iconv的--silent参数改成-s,效果是一样的,但是--silent将导致问题,这好像是一个已知的bug,

5,进入libgcrypt-1.5.0文件夹,运行./autogen.sh 之后 make && make install.libgcrypt的文档上说的是./autogen.sh --build-w32指令,它的意思是在gnu环境下编译win32平台的目标文件,由于我是在win7下编译,所以不需要该参数

6,make install 的时间相当漫长


libgcrypt编译完之后是xerces,xerces的编译没什么问题,编译完这些库之后,在OVALInterprete这设置 include目录和lib目录,对于xerces还需要在链接选器的常规项中设置附加库目录,和刚才的lib一样的路径,在链接器的输入选项中添加xerces生成的lib文件名。开始编译,编译的过程中没有出现问题,但在链接的时候却出现了43个错误,典型的链接错误提示:无法找到外部符号:“"__declspec(dllimport) public: static void __cdecl xerces::................”,但是xerces明明已经设置好了,在这里纠结了好久,网上也没发现什么解决方法,该死的baidu 查不到有用信息,google又连接不正常,于是去玩了一会游戏,等待google恢复正常。google之后发现问题可能出在字符集设置上,OVALInterprete和xerces都是未设置,都改成多字节之后重新编译,问题依旧,在继续查找,发现是wchar_t的问题,OVALInterprete项目将wchar_t视为内置类型,而xerces没有,都改成不视为内置类型之后终于编译成功。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值