2013-07-29 71 views
1

我想通過ctypes加載當前的Python DLL。我可以加載它像ctypes.windll.python33,但取決於當前版本。我知道它有sys.dll手柄中的句柄,但我不知道如何轉換ctypes DLL對象中的句柄。如何獲取當前的Python DLL?

回答

1

也許更好ctypes.pythonapi?從ctypes/__init__.py

if _os.name in ("nt", "ce"): 
    pythonapi = PyDLL("python dll", None, _sys.dllhandle) 
elif _sys.platform == "cygwin": 
    pythonapi = PyDLL("libpython%d.%d.dll" % _sys.version_info[:2]) 
else: 
    pythonapi = PyDLL(None) 

代碼如果你想通過手柄來加載庫:

hndl = sys.dllhandle 
pythondll = ctypes.CDLL('python dll', handle=hndl) 

PyDLL和WINDLL子類CDll和_func_flags_屬性不同。