2017-02-03 12 views
1

私は、ビジュアルスタジオ2015で自分のPythonモジュールを作成しようとしています。私は、Windows XP上のモジュールをインポートしようとすると、私はこのエラーを取得:Windowsで動作しないBoost pythonモジュールxp

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

私はブーストの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%" 

ここdescirbedとして:Windows XP Targeting with C++ in Visual Studio 2012

がどのように私は、DLLは、Windows XPの下で仕事を得ることができますか?

答えて

1

は、いくつかのより多くの調査の後、私はこの結論に達しました:

のVisual Studio 2015コンパイラの動作は、Windows XP用に変更されました。 here

"新しいMagic Staticが暗黙的なTLSをフードの下で使用するため、Visual Studio 2015にアップグレードした後に問題になるシェル拡張DLLがあります。"

VS2015コンパイラはTLSを使用しますが、この記憶域はWindows XPでは正しく初期化されません。したがって、初期化されていない静的変数のため、Boost.Pythonはクラッシュします。

そこは回避策は次のとおりです。

「の回避策は、限り、あなたはそれ以外の場合はマジック静機能に依存しないようコンパイラスイッチ/Zc:threadSafeInit-を使用することです。」

希望すると、Windows XPをサポートする必要がある他の人に役立ちます

関連する問題