Boost Python模块在Windows XP上不起作用

莱伦

我正在尝试使用boost python在Visual Studio 2015中创建自己的python模块。当我尝试在Windows XP上导入模块时,出现此错误:

ImportError: DLL load failed: Invalid access to memory location.

我尝试了所有可以找到的东西,以使我的增强型python构建与Windows xp兼容,例如使用此选项:

b2 release define=BOOST_USE_WINAPI_VERSION=0x0501

如此处所述Boost 1.60.0或在callig b2之前设置环境变量。

set "INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Include;%INCLUDE%"
set "PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Bin;%PATH%"
set "LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib;%LIB%"
set "CL=/D_USING_V110_SDK71_;%CL%"
set "LINK=/SUBSYSTEM:CONSOLE,5.01 %LINK%"

如此处所述:在Visual Studio 2012中使用C ++定位Windows XP

我如何使dll在Windows XP下工作?

莱伦

经过更多调查后,我得出以下结论:

Windows XP的Visual Studio 2015编译器行为已更改。我在这里找到了行为的解释

“我们有一个外壳扩展dll,升级到Visual Studio 2015后会遇到问题,因为新的Magic Static在后台使用了隐式TLS。”

这意味着,VS2015编译器将使用TLS,但是在Windows XP上不会正确初始化此存储。因此,Boost.Python将由于未初始化的静态变量而崩溃。

有一种解决方法:

“一种解决方法是使用编译器开关/Zc:threadSafeInit-,只要您不另外依赖Magic Statics功能即可。”

希望这对必须支持Windows XP的其他人有所帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章