1

IDLEGUIを介してWindowsXPでPython2.7.3を使用しており、PythonAPIを介してローカルでZ34.0を実行しようとしています。

この行は正常に機能します:

>>> from z3 import *

この行はしません:

>>> x = Int('x')

Traceback (most recent call last):
[...]
  File "C:\Program Files\Microsoft Research\Z3-4.0\python\z3core.py", line 34, in init
    _lib = ctypes.CDLL(PATH)
  File "C:\Python27\lib\ctypes\__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] The specified module could not be found

誰もが問題が何であるか知っていますか?

私のPYTHONPATHは、引用符なしで「C:\ Program Files \ Microsoft Research \ Z3-4.0\python」に設定されています。

4

2 に答える 2

1

Z3 はスレッド ローカル ストレージを使用します。__declspec(thread) を使用して実装されます。残念ながら、これは Windows XP および Server 2003 の DLL ではサポートされていません。MSN のドキュメントから:

「プロセスの開始後に動的に読み込まれる DLL (遅延読み込み、COM オブジェクト、明示的な LoadLibrary など) の場合、__declspec(thread) は Windows XP、2003 Server およびそれ以前の OS では機能しませんが、Vista および 2008 Server では機能します。 "

したがって、Z3 DLL を使用するには、Windows 8、7、Vista、または Server 2008 のいずれかを使用する必要があります。

于 2012-06-28T20:37:52.510 に答える
0

Windows XPでは、ファイル名のスペースに問題があり、Pythonがz3.dllを見つけられない場合があります。これは一般的なPythonの問題のようです。たとえば 、PYTHONPATHに関する注意事項を参照してください。

ディレクトリに古い8.3形式を使用すると機能する場合があります。コマンドシェルでZ3ディレクトリを見つけることで短い名前を見つけることができ(Windows7で短い名前を表示するにはdir/ xを使用します)、私のシステムでは短いパスはC:\ progra〜1 \ mi4430〜1\z3です。 -4.0\bin。ただし、これらの数値はインストールごとに異なります。

より迅速な解決策は、z3.dllをbinディレクトリからpythonディレクトリに(または64ビットの場合はx64ディレクトリから)コピーすることです。

于 2012-06-27T18:13:01.040 に答える