在 Windows 上使用 JNA 调用 __cpuid 函数
Posted
技术标签:
【中文标题】在 Windows 上使用 JNA 调用 __cpuid 函数【英文标题】:Using JNA to call the __cpuid function on Windows 【发布时间】:2012-10-24 00:15:45 【问题描述】:我需要在 Java 中获取处理器信息(供应商、型号等)。我通常会使用 C/C++,但不幸的是,对于我当前的项目,这必须在 Java 中完成。我正在使用 JNA 进行本机访问,并且我已将我的 JNA Library
声明如下:
public interface CLibrary extends Library
public void __cpuid(int[] CPUInfo, int InfoType);
我正在尝试这样拨打电话:
CLibrary c = (CLibrary) Native.loadLibrary("msvcrt", CLibrary.class);
int[] CPUInfo = new int[4];
c.__cpuid(CPUInfo, 0);
但是我收到了Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'intrin': The specified module could not be found.
,这可能意味着我加载了错误的库。
那么我需要加载什么库才能访问 Windows 上的 __cpuid
函数?
【问题讨论】:
【参考方案1】:由于 __cpuid 是编译器固有的 (see MSDN) 而不是函数,因此没有关联的 DLL。您需要自己编写。
【讨论】:
除了它们的内联版本之外,一些内在函数还可以作为函数使用。系统错误似乎表明“__cpuid”符号将在“intrin”库中找到。您可以检查是否存在这样的 DLL。 @technomage:我希望文档能够反映功能版本的存在。头文件中也没有它的迹象。以上是关于在 Windows 上使用 JNA 调用 __cpuid 函数的主要内容,如果未能解决你的问题,请参考以下文章