,我發現有幾個職位在這裏有關卸載使用ctypes的一個dll,一個64位的DLL,我跟着完全相同的方式說是工作 從ctypes的導入*錯誤,當卸載使用ctypes的WINDLL
file = CDLL('file.dll')
# do some stuff here
handle = file._handle # obtain the DLL handle
windll.kernel32.FreeLibrary(handle)
然而,我是在蟒蛇64位和我的DLL也編譯爲x64和我從最後一行的錯誤說上面:
argument 1: <class 'OverflowError'>: int too long to convert
我查手柄是「8791681138688一個長整型(Int64的) ',那麼這是否意味着windll.kernel32只處理int32句柄? Google搜索顯示kernal32也適用於64位窗口。那麼我該如何處理呢?
然後'kernel32.FreeLibrary(handle)',而不是'windll.kernel32.FreeLibrary(handle)',對吧? – endolith
@endolith,是的,它定義了緩存在kernel32上的'FreeLibrary'函數指針的原型。最好避免使用'windll'加載器,因爲它是全局的,並且可能導致公用共享庫(如kernel32.dll)的包之間發生衝突。 – eryksun