我想通过ctypes加载当前的Python DLL。我可以像ctypes.windll.python33一样加载它,但这取决于当前版本。我知道sys.dllhandle中有它的句柄,但我不知道如何转换ctypes DLL对象中的句柄。
答案 0 :(得分: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_属性不同。