2

Windows で ctypes を使用して DLL にアクセスします。通常、DLL を同じ名前の .py でラップし、一部の関数で使用される ctypes 構造体などの DLL の追加サポートを追加します。次の手法を使用して DLL をロードします。

# Determine the absolute path to the DLL that resides in the same directory as this module.
absolute_path = os.path.join(os.path.dirname(__file__), 'monty.dll')

interface = ctypes.CDLL(absolute_path)

モジュールは私が管理しているパッケージの一部であり、より少ないファイルを作成するために bundle_files を 1 に設定して Py2exe を使用したいと考えています。library.zip が .exe の横にあることをうれしく思います。

したがって、明らかな問題は、monty.py が monty.dll にアクセスしようとし、そのパスが .../library.zip/root/dll/monty.dll であると想定することです。

DLL を library.zip にパッケージ化する方法を見つけましたが、ctypes が .zip ファイル内のパスを拒否していると思われます。Windows は、モジュールを読み込めないと文句を言います。

上記を機能させることが私の最初の選択肢ですが、フォールバックは、私のパッケージを除くすべてをlibrary.zipに入れることかもしれません。これをどのように達成できるかについてのアイデアはありますか?

4

0 に答える 0