2012-10-24 26 views
0

我需要使用Java获取处理器信息(供应商,模型等)。我通常会使用C/C++,但不幸的是,这必须在我的当前项目中使用Java来完成。我使用JNA提供本地访问,我已经说过我是JNA Library如下:使用JNA在Windows上调用__cpuid函数

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。你需要写你自己的。

+0

除了它们的内联版本之外,一些内在函数可能作为函数提供。系统错误似乎表明“__cpuid”符号会在“内部”库中找到。你可能会检查这个DLL是否存在。 – technomage

+0

@technomage:我希望这个文档能够反映一个函数版本的存在。头文件中也没有它的标志。 –