【问题标题】:error LNK2019: unresolved external symbol NvAPI_GPU_GetThermalSettings referenced in错误 LNK2019:未解析的外部符号 NvAPI_GPU_GetThermalSettings 中引用
【发布时间】:2015-02-12 20:16:39
【问题描述】:

我正在尝试编写一个简单的代码来从我的 GPU (NVidia Geforce 760 GTX) 获取一些信息,例如使用 NVAPI 的温度。
我从 CUDA 示例代码开始。也许你看到了 NVidia 提供的这些示例代码。我复制了一个示例代码('CUDA Samples\v6.5\0_Simple\vectorAdd')来编写这个示例。我将 NVAPI 的所有“.h”文件复制到“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 在函数中引用...
和一些类似的错误。

【问题讨论】:

  • 这是一个链接器错误,你错过了添加一些 NVidia 库
  • 尽管您使用了 CUDA 示例代码,但问题与 CUDA 无关。 NVAPI 不是 CUDA API,您报告的所有问题都与 NVAPI 相关,而不是 CUDA。
  • 如前所述,我复制了所有 .h 文件以包含 cuda 目录。因此,如果需要 .h 文件,则应在这些目录中找到它。
  • 您的问题与 .h 文件无关。这是一个链接器问题。您需要将 nvapi.lib 或 nvapi64.lib 正确链接到您的项目中。这不仅仅是将文件从一个地方复制到另一个地方。研究 how to add a library 到 Visual Studio 中的链接器规范。

标签: c++ linker-errors lnk2019 nvapi


【解决方案1】:

您需要转到您的项目属性并展开链接器选项 -> 在附加依赖项选项中输入并添加所需的 nvapi*.lib 文件。

【讨论】:

    猜你喜欢
    • 2012-10-31
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多