带有VS2012的Boost::python1.55.0的方法比需要的少

2024-06-25 05:25:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我下载了boost 1.55.0。从boost website

我的visualstudio版本是11.0.50727.1。在

  1. 打开VS2012 x86 Native Tools命令提示符。在
  2. 光盘
  3. 在引导.bat

  4. b2.exe文件 在编译之后,我就可以找到所有的库了

  5. 我找到了。在
  6. 我使用lib2def从libboost_python-vc110-mt-1_55.lib中查找导出函数。在

结果列表:

LIBRARY libboost_python-vc110-mt-1_55

EXPORTS
"__CT??_R0?AU?$error_info_injector@Vbad_function_call@boost@@@exception_detail@boost@@@8??0?$error_info_injector@Vbad_function_call@boost@@@exception_detail@boost@@QAE@ABU012@@Z32"
"__CT??_R0?AUerror_already_set@python@boost@@@8??0error_already_set@python@boost@@QAE@ABU012@@Z4"
"__CT??_R0?AV?$clone_impl@U?$error_info_injector@Vbad_function_call@boost@@@exception_detail@boost@@@exception_detail@boost@@@8??0?$clone_impl@U?$error_info_injector@Vbad_function_call@boost@@@exception_detail@boost@@@exception_detail@boost@@QAE@ABV012@@Z44"
"__CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QAE@ABV01@@Z12"
"__CT??_R0?AVbad_cast@std@@@8??0bad_cast@std@@QAE@ABV01@@Z12"
"__CT??_R0?AVbad_function_call@boost@@@8??0bad_function_call@boost@@QAE@ABV01@@Z12"
"__CT??_R0?AVbad_numeric_cast@numeric@boost@@@8??0bad_numeric_cast@numeric@boost@@QAE@ABV012@@Z12"
"__CT??_R0?AVclone_base@exception_detail@boost@@@8??0clone_base@exception_detail@boost@@QAE@ABV012@@Z40324"
"__CT??_R0?AVexception@boost@@@8??0exception@boost@@QAE@ABV01@@Z2012"
"__CT??_R0?AVexception@std@@@8??0exception@std@@QAE@ABV01@@Z12"
"__CT??_R0?AVinvalid_argument@std@@@8??0invalid_argument@std@@QAE@ABV01@@Z12"
"__CT??_R0?AVlogic_error@std@@@8??0logic_error@std@@QAE@ABV01@@Z12"
"__CT??_R0?AVnegative_overflow@numeric@boost@@@8??0negative_overflow@numeric@boost@@QAE@ABV012@@Z12"
"__CT??_R0?AVpositive_overflow@numeric@boost@@@8??0positive_overflow@numeric@boost@@QAE@ABV012@@Z12"
"__CT??_R0?AVrange_error@std@@@8??0range_error@std@@QAE@ABV01@@Z12"
"__CT??_R0?AVruntime_error@std@@@8??0runtime_error@std@@QAE@ABV01@@Z12"
"__CTA1?AUerror_already_set@python@boost@@"
"__CTA2?AVbad_alloc@std@@"
"__CTA3?AVinvalid_argument@std@@"
"__CTA3?AVrange_error@std@@"
"__CTA4?AVnegative_overflow@numeric@boost@@"
"__CTA4?AVpositive_overflow@numeric@boost@@"
"__CTA7?AV?$clone_impl@U?$error_info_injector@Vbad_function_call@boost@@@exception_detail@boost@@@exception_detail@boost@@"
"__TI1?AUerror_already_set@python@boost@@"
"__TI2?AVbad_alloc@std@@"
"__TI3?AVinvalid_argument@std@@"
"__TI3?AVrange_error@std@@"
"__TI4?AVnegative_overflow@numeric@boost@@"
"__TI4?AVpositive_overflow@numeric@boost@@"
"__TI7?AV?$clone_impl@U?$error_info_injector@Vbad_function_call@boost@@@exception_detail@boost@@@exception_detail@boost@@"
"encode_string_unaryfunc"
"identity_unaryfunc"
"no_init"
"wmemcpy"
"wmemmove"
"wmemset"

我需要这个库中的所有boost::python函数,如何解决这个问题?在

更新:

我不知道为什么,也许这是个问题,但VS2012正在尝试加载“boost_python-vc110-mt-gd-1_55.lib”(如果没有这样的文件,我会出现链接器错误)。如何使其不链接动态而非静态?如何让我的项目使用静态库? 在我的项目中没有任何关于它应该采取哪一个库的设置,那就是增强自动链接功能。。。在

更新2:

我找到了解决方案——如果我动态地构建boost_python库,一切都会很好地工作。我的编译器(来自VS2012)希望所有的boost库都是静态的,而boost_python只需要动态的。所以当我给他静态版本的python时,它拒绝了。我不知道为什么和如何管理它,但这是第二个问题的主体。在


Tags: infoexceptionfunctionerrorcallstddetailboost