我正在尝试使用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] 删除。
我来说两句