vs2010编译OVALInterpreter

来源:互联网 发布:淘宝客服处理技巧 编辑:程序博客网 时间:2024/05/21 22:43

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没有,都改成不视为内置类型之后终于编译成功。


原创粉丝点击