我尝试使用 NVAPI 编写一个简单的代码,用于从我的GPU(NVidia Geforce 760 GTX)获取一些信息,例如温度。
我从CUDA示例代码开始。也许您会看到NVidia提供的这些示例代码。我复制了一个示例代码(' CUDA Samples \ v6.5 \ 0_Simple \ vectorAdd')来写入此示例。我复制了所有的' .h' NVAPI的文件到' CUDA Samples \ v6.5 \ common \ inc'并复制' nvapi.lib'到' CUDA Samples \ v6.5 \ common \ lib \ Win32'并复制' nvapi64.lib'到' CUDA Samples \ v6.5 \ common \ lib \ x64'。
我已将这些副本预先打印到' C:\ Program Files \ CUDA \ v6.5 \ include'和' C:\ Program Files \ CUDA \ v6.5 \ lib'。
这是我写的代码:
int _txmain() {
NvAPI_Status ret = NVAPI_OK;
int i=0;
NvDisplayHandle hDisplay_a[NVAPI_MAX_PHYSICAL_GPUS*2] = {0};
ret = NvAPI_Initialize();
if (!ret == NVAPI_OK){
NvAPI_ShortString string;
NvAPI_GetErrorMessage(ret, string);
printf("NVAPI NvAPI_Initialize: %s\n", string);
}
NvAPI_ShortString ver;
NvAPI_GetInterfaceVersionString(ver);
printf("NVAPI Version: %s\n", ver);
NvU32 cnt;
NvPhysicalGpuHandle phys;
ret = NvAPI_EnumPhysicalGPUs(&phys, &cnt);
if (!ret == NVAPI_OK){
NvAPI_ShortString string;
NvAPI_GetErrorMessage(ret, string);
printf("NVAPI NvAPI_EnumPhysicalGPUs: %s\n", string);
}
NvAPI_ShortString name;
NV_GPU_THERMAL_SETTINGS thermal;
ret = NvAPI_GPU_GetFullName(phys, name);
if (!ret == NVAPI_OK){
NvAPI_ShortString string;
NvAPI_GetErrorMessage(ret, string);
printf("NVAPI NvAPI_GPU_GetFullName: %s\n", string);
}
printf("Name: %s\n", name);
thermal.version =NV_GPU_THERMAL_SETTINGS_VER;
ret = NvAPI_GPU_GetThermalSettings(phys,0, &thermal);
if (!ret == NVAPI_OK){
NvAPI_ShortString string;
NvAPI_GetErrorMessage(ret, string);
printf("NVAPI NvAPI_GPU_GetThermalSettings: %s\n", string);
}
printf("Temp: %l C\n", thermal.sensor[0].currentTemp);
return 0;
}
但是当我构建我的代码时,我收到了这些错误:
错误28错误LNK2019:未解析的外部符号NvAPI_GPU_GetThermalSettings在函数中引用...
错误29错误LNK2019:函数中引用了未解析的外部符号NvAPI_GPU_GetFullName
和一些类似的错误。
答案 0 :(得分:2)
您需要转到项目属性并展开链接器选项 - >在Additional dependencies选项中输入并添加所需的nvapi * .lib文件。