我使用带有ctypes的win32函数
我将所有声明放在一个文件(wrapper
)中,并在main
文件中使用它们
为什么我得到error
该函数未定义?
如果我将声明放在主文件中,一切都按预期工作
两个文件都在同一目录中。
wrapper.py
from ctypes import *
from ctypes import wintypes
# Create ctypes wrapper for Win32 functions we need, with correct argument/return types
_CreateMutex = windll.kernel32.CreateMutexA
_CreateMutex.argtypes = [wintypes.LPCVOID, wintypes.BOOL, wintypes.LPCSTR]
_CreateMutex.restype = wintypes.HANDLE
main.py
import wrapper
_CreateMutex(...)
错误:
NameError: name '_CreateMutex' is not defined
答案 0 :(得分:0)
有(至少)两种解决方案:
import wrapper
wrapper._CreateMutex()
或
from wrapper import _CreateMutex
_CreateMutex()
没有详细介绍(可能是https://docs.python.org/3.5/tutorial/modules.html?)
import wrapper
将“包装器”添加到当前命名空间 - 仅此而已,因此名称_CreateMutex()不存在。
答案 1 :(得分:0)
当您导入wrapper.py时,您应该使用: `
import wrapper
wrapper._CreateMutex(...)`