【问题标题】:Using JNA to call the __cpuid function on Windows在 Windows 上使用 JNA 调用 __cpuid 函数
【发布时间】: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 函数?

【问题讨论】:

    标签: java windows jna cpuid


    【解决方案1】:

    由于 __cpuid 是编译器固有的 (see MSDN) 而不是函数,因此没有关联的 DLL。您需要自己编写。

    【讨论】:

    • 除了它们的内联版本之外,一些内在函数还可以作为函数使用。系统错误似乎表明“__cpuid”符号将在“intrin”库中找到。您可以检查是否存在这样的 DLL。
    • @technomage:我希望文档能够反映功能版本的存在。头文件中也没有它的迹象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多