पायथन में डीएलएल मॉड्यूल आयात करने में समस्या
पाइथॉन में 'libuvc.dll' मॉड्यूल को आयात करने का प्रयास करते समय आपको एक समस्या का सामना करना पड़ा है विंडोज़ 10. लिनक्स पर समान पायथन संस्करण का उपयोग करके लाइब्रेरी को सफलतापूर्वक संकलित और आयात करने के बावजूद, अब आपको विंडोज़ पर कठिनाइयों का सामना करना पड़ता है।
आपको जो त्रुटि आ रही है वह बताती है कि पायथन 'ctypes.util.find_library('libuvc')' द्वारा प्राप्त पथ पर 'libuvc.dll' मॉड्यूल का पता लगाने में असमर्थ है। हालाँकि, आपने उस स्थान पर फ़ाइल के अस्तित्व को सत्यापित कर लिया है।
दोषी 'cdll.LoadLibrary' फ़ंक्शन में है। 3.8 से पहले के पायथन संस्करणों में, 'विनमोड' पैरामीटर मौजूद नहीं था, और 'मोड' का सीधे उपयोग किया जाता था। 'मोड' का डिफ़ॉल्ट मान 'ctypes.DEFAULT_MODE' था, जो शून्य से मेल खाता है।
हालाँकि, Python 3.8 और बाद में, DLL खोज मोड को निर्दिष्ट करने के लिए 'winmode' पैरामीटर पेश किया गया था। डिफ़ॉल्ट रूप से, यह 'कोई नहीं' पर सेट है, जो 'nt._LOAD_LIBRARY_SEARCH_DEFAULT_DIRS' से मेल खाता है। दुर्भाग्य से, यह खोज मोड 'os.environ['PATH'], sys.path', और 'os.add_dll_directory' में संशोधनों को अनदेखा करता है।
समाधान:
इस समस्या को हल करने के लिए, 'लोड लाइब्रेरी' फ़ंक्शन में स्पष्ट रूप से 'विनमोड' पैरामीटर को शून्य पर सेट करें। यह पायथन को पूर्ण पथ का उपयोग करने और मॉड्यूल को सफलतापूर्वक आयात करने के लिए बाध्य करेगा।
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