Visual studio 2015 Boost python模块不适用于windows xp

Visual studio 2015 Boost python模块不适用于windows xp,visual-studio-2015,windows-xp,boost-python,Visual Studio 2015,Windows Xp,Boost Python,我正在尝试使用boost python使用visual studio 2015创建自己的python模块。在windows xp上尝试导入模块时,出现以下错误: ImportError: DLL load failed: Invalid access to memory location. 我尝试了我能找到的一切,以使我的boost python构建与windows xp兼容,例如使用以下选项: b2 release define=BOOST_USE_WINAPI_VERSION=0x0501

我正在尝试使用boost python使用visual studio 2015创建自己的python模块。在windows xp上尝试导入模块时,出现以下错误:

ImportError: DLL load failed: Invalid access to memory location.
我尝试了我能找到的一切,以使我的boost python构建与windows xp兼容,例如使用以下选项:

b2 release define=BOOST_USE_WINAPI_VERSION=0x0501
如本文所述。或者在调用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%"
如下所述:


如何使dll在Windows XP下工作?

经过进一步调查,我得出以下结论:

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

“我们有一个shell扩展dll,升级到Visual Studio 2015后遇到问题,因为新的Magic Static在引擎盖下使用隐式TLS。”

这意味着,VS2015编译器将使用TLS,但此存储将无法在Windows XP上正确初始化。Python将因此崩溃,因为未初始化的静态变量

有一个解决办法:

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

希望这能帮助其他必须支持Windows XP的人