Python での DLL モジュールのインポートに関する問題
Python で 'libuvc.dll' モジュールをインポートしようとしたときに問題が発生しましたWindows 10。Linux 上で同じ Python バージョンを使用してライブラリを正常にコンパイルおよびインポートしたにもかかわらず、Windows 10 では問題が発生します。 Windows.
発生しているエラーは、Python が 'ctypes.util.find_library('libuvc')' によって取得されたパスで 'libuvc.dll' モジュールを見つけることができないことを示しています。ただし、その場所にファイルが存在することは確認されました。
原因は「cdll.LoadLibrary」関数にあります。 3.8 より前の Python バージョンでは、「winmode」パラメータは存在せず、「mode」が直接使用されていました。 「mode」のデフォルト値は「ctypes.DEFAULT_MODE」で、ゼロに相当します。
ただし、Python 3.8 以降では、DLL 検索モードを指定するために「winmode」パラメータが導入されました。デフォルトでは、「なし」に設定されており、「nt._LOAD_LIBRARY_SEARCH_DEFAULT_DIRS」に対応します。残念ながら、この検索モードでは、'os.environ['PATH']、sys.path'、および 'os.add_dll_directory' への変更は無視されます。
解決策:
この問題を解決するには、「LoadLibrary」関数で「winmode」パラメータを明示的にゼロに設定します。これにより、Python は絶対パスを使用し、モジュールを正常にインポートするようになります。
import ctypes
name = ctypes.util.find_library('libuvc')
lib = ctypes.cdll.LoadLibrary(name, winmode=0)
「winmode=0」を指定すると、デフォルトの検索モードがバイパスされ、Python が予想される場所から DLL をロードするようになります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3