我需要的是在c++
程序中检索到的Nvidia驱动程序的2号版本(例如368.39)。使用Windows 7 64b。
Here是如何使用来自Nvidia的NVML库在64位应用程序中执行此操作。
但是,与Nvidia驱动程序一起分发的nvml.dll
仅为64位。在我的32位程序中无法动态加载此库。这假设您的计算机是64位。我没有在32位机器上测试过它。
到目前为止,NVML似乎是唯一允许检索此信息的库。如果有的话还有什么方法可以获得这个?
答案 0 :(得分:1)
我假设您使用的是Windows,因为您提到“.dll” 在Windows中,您应该能够使用WMI获取所需的任何硬件信息。对于显示适配器,使用Win32_VideoController WMI类,它有一个名为driverversion的字符串字段,应该有你想要的。
https://msdn.microsoft.com/en-us/library/aa394512(v=vs.85).aspx
答案 1 :(得分:1)
// ---------------------------------------------------------------------
// (windows) how to get the nvidea driver version?
// ---------------------------------------------------------------------
#define C(a) {std::cout<<a<<std::endl;} // for easy print out to console
template <class T> inline std::string TOSTR(const T fp){ // a macro
std::ostringstream o;
o.setf(std::ios_base::fixed, std::ios_base::floatfield);
o << fp; // << ends; (null-terminator character)
return std::string(o.str());
}
// ---------------------------------------------------------------------
#pragma comment(lib,"nvapi.lib") // needed !
#include <nvapi.h> // needed !
// you have to start nvapi:
NvAPI_Status ret(NVAPI_OK);
ret = NvAPI_Initialize();
if(ret != NVAPI_OK) {
NvAPI_ShortString string;
NvAPI_GetErrorMessage(ret, string);
printf("NVAPI NvAPI_Initialize: %s\n", string);
}
NvAPI_Status s;
NvU32 v; // version
NvAPI_ShortString b; // branch
s = NvAPI_SYS_GetDriverAndBranchVersion(&v, b);
if(s != NVAPI_OK) {
NvAPI_ShortString string;
NvAPI_GetErrorMessage(s, string);
printf("NvAPI_SYS_GetDriverAndBranchVersion: %s\n", string);
}
C("Nvidea driver version: " + TOSTR(v)); // app, console output
// ...hope i can help ....