Boost python模块无法在windows xp上运行

时间:2017-02-03 14:11:29

标签: 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 Version 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%"

如此处所示:Windows XP Targeting with C++ in Visual Studio 2012

如何让dll在Windows XP下运行?

1 个答案:

答案 0 :(得分:1)

经过一番调查,我得出了这个结论:

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

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

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

有一种解决方法:

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

希望这有助于其他必须支持Windows XP的用户

相关问题