注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

^_^ china.ygw的博客

软件开发/c/c++/数据库/开源/linux/windows/安全/网络...

 
 
 

日志

 
 
 
 

python问题导致Windows系统下boost编译未完全成功的解决  

2011-07-15 23:24:11|  分类: boost |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

        关于Windows下完整编译boost的说明可以参见我之前的博文《Windows 7(64位)下通过vs2010完整安装boost 1.46.1(32位/64位)》,但是可能已经有人发现,不管是32位还是64位的编译,都存在部分文件失败或被忽略的情况,具体在最后会提示如下相关的信息:

               ...failed updating xxx targets...

               ...skipped xxx targets...

               ...updated xxx targes...

         第一行是说有xxx个目标更新失败;第二行是说有xxx个目标被忽略(实际上也是失败);第三行说xxx个目标已更新(就是成功的)。

         以前编译的时候没有注意这个问题,前几天发现最新的boost 1.47.0版本已经出来,就下载了最新版本并重新进行编译,结果就注意到了这个问题。经过处理,该问题已经解决,也发现了之前博文的一些问题:

         1)在执行boost编译命令之前,需要先执行一次bootstrap.bat命令(只需要执行一次即可。该问题已经更新至之前博文);

          2)编译32位程序与64位程序时,所执行的命令不一样,具体是:通过vs2010菜单的“Visual Studio Command Prompt (2010)”菜单项进入命令行编译32位程序;通过vs2010菜单的“Visual Studio X64 Win64 Command Prompt (2010)”菜单项进入命令行编译64位程序(该问题已经更新至之前博文);

          3)python问题。这个问题也是此博文的核心问题。原因就在于编译32位或64位程序时,需要不同版本(32位或64位)的python支持,否则最终结果就会出现前述情况(该问题已经更新至之前博文)。

                其编译过程中有类似报错:

                builtin_converters.obj : error LNK2019: unresolved external symbol __imp__PyLong
_AsLongLong referenced in function "public: static __int64 __cdecl boost::python
::converter::`anonymous namespace'::long_long_rvalue_from_python::extract(struct
 _object *)" (?extract@long_long_rvalue_from_python@?A0x7a78a359@converter@pytho
n@boost@@SA_JPAU_object@@@Z)
                builtin_converters.obj : error LNK2019: unresolved external symbol __imp__PyLong
_AsUnsignedLongLong referenced in function "public: static unsigned __int64 __cd
ecl boost::python::converter::`anonymous namespace'::unsigned_long_long_rvalue_f
rom_python::extract(struct _object *)" (?extract@unsigned_long_long_rvalue_from_
python@?A0x7a78a359@converter@python@boost@@SA_KPAU_object@@@Z)
                builtin_converters.obj : error LNK2019: unresolved external symbol __imp__PyBool
_Type referenced in function "public: static struct _typeobject const * __cdecl
boost::python::converter::`anonymous namespace'::bool_rvalue_from_python::get_py
type(void)" (?get_pytype@bool_rvalue_from_python@?A0x7a78a359@converter@python@b
oost@@SAPBU_typeobject@@XZ)

                 从出错信息来看,很容易发现是python引发。我目前在Windows上编译采用的做法是:编译32位boost程序时先安装32位的python,编译完成后再卸掉,然后再安装64位的python,继续进行64位boost程序的编译,反之亦然。

  评论这张
 
阅读(502)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018