帮助使用 python ctypes 和 nvapi

use*_*862 5 python ctypes

我的最终目标是在 python 中查询 NVAPI 以获取 gpu 使用情况和其他统计信息。请参阅http://developer.nvidia.com/nvapi

from ctypes import WinDLL
nvapi = WinDLL("nvapi.dll")
print nvapi# <WinDLL 'nvapi.dll', handle 718a0000 at 27c0050>
print nvapi.nvapi_QueryInterface# <_FuncPtr object at 0x026D8E40>
print nvapi.nvapi_QueryInterface()# returns 0
print nvapi.NvAPI_Initialize# AttributeError: function 'NvAPI_Initialize' not found
print nvapi.NvAPI_SYS_GetChipSetInfo# AttributeError: function 'NvAPI_SYS_GetChipSetInfo' not found
Run Code Online (Sandbox Code Playgroud)

以下是可从以上链接下载的头文件副本:http : //paste.pound-python.org/show/7337/

在这一点上,我只是试图让自己熟悉 api ......那我做错了什么?我不知道如何调用头文件中列出的任何函数。

Jim*_*som 0

摘自您的评论:

NvAPI_Initialize 调用仍然失败。说找不到该功能。

NvAPI_Initialize不是从动态库 nvapi.dll 导出的。它是 nvapi.lib 中包含的符号,nvapi.lib 是 NVIDIA SDK 附带的静态库,因此无法使用 Python 调用它也就不足为奇了。

老实说,这里最简单的方法是用 C 创建一个小型包装 DLL,静态链接到 nvapi.lib 并向 Python 公开一个友好的接口。