使用VS2012的python 1.55.0比需要的方法少
我下载了Boost1.55.0。从 我的Visual Studio的版本是11.0.50727.1使用VS2012的python 1.55.0比需要的方法少,python,c++,visual-studio-2012,boost,Python,C++,Visual Studio 2012,Boost,我下载了Boost1.55.0。从 我的Visual Studio的版本是11.0.50727.1 打开VS2012 x86本机工具命令提示符 光盘 bootstrap.bat b2.exe 编译后,console写道,一切都很顺利,我可以在\stage\lib中找到库 我找到了 我使用lib2def从libboost_python-vc110-mt-1_55.lib查找导出函数 结果列表: LIBRARY libboost_python-vc110-mt-1_55 EXPORTS "__CT
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”(如果没有这样的文件,我会出现链接器错误)。如何使其不链接动态而不是静态?如何命令我的项目使用静态库?
在我的项目中没有关于它应该使用哪个库的任何设置,这就是boost自动链接功能
更新2:
我找到了解决方案——如果我动态构建boost_python库,一切都会正常工作。我的编译器(来自VS2012)希望所有的boost库都是静态的,但boost_python只是动态的。所以当我给他python的静态版本时,他拒绝了。我不知道为什么以及如何管理它,但这是第二个问题I的主体。尝试文件上的
DUMPBIN/SYMBOLS
。它是否显示了您需要的符号?DuppBin附带VisualC++。请注意,LIbBoox*文件是静态库。如果您试图动态链接到DLL版本,请查看boost_python-vc110-mt-1_55.lib谢谢,使用DumpBin我获得了9,5 Mb的文本,具有不同的外部类型和函数。所以,我认为我遇到麻烦的原因可能是在建筑物的版本中:我在VS中的项目缺少功能是x32,但boost可以在x64中构建。这就是为什么lib2def(即x32)只看到了30个外部,但VS命令提示符和dumpbin却发现了更多。我现在更新了VS 2012以更新4(我认为可能存在问题),现在我用新的更新版本重建了整个boost。当它结束时,我会检查我的建议,我在上面写的。我希望这就是原因。非常感谢:-)我已按顺序构建:b2.exe地址模型=32架构=x86-结果仍然相同:-(