是否有可能获得有关Native库的信息,一旦从java中加载了库(32位或64位)的示例架构。
目的:在运行时向用户显示库的库版本和体系结构。
答案 0 :(得分:2)
所有本机库(Windows EXE,DLL,OCX,SYS等)都是PE格式。 PE文件的意义在于,磁盘上的数据结构与内存中使用的数据结构相同。
将可执行文件加载到内存中(例如,通过调用LoadLibrary)主要是将PE文件的某些范围映射到地址空间。
描述PE格式(以及COFF文件)的中心位置是WINNT.H。在这个头文件中,您几乎可以找到处理PE文件或内存中等效结构所需的每个结构定义,枚举和#define。
在偏移量0x0FE处有一个名为CHARACTERESTICS的PE字段,有许多特征,如IMAGE_FILE_32BIT_MACHINE,IMAGE_FILE_EXECUTABLE_IMAGE。 IMAGE_FILE_32BIT_MACHINE(0x100)用于32位DLL / EXE。
您可以使用Java的Reflection API来解决它。 示例可以帮助您 -
http://www.devdaily.com/java/jwarehouse/scala/src/msil/ch/epfl/lamp/compiler/msil/PEType.java.shtml
答案 1 :(得分:0)
您可以使用system property
System.getProperty("java.version");
获取Java版本。
您可以使用内部系统属性
System.getProperty("sun.arch.data.model")
获取数据模型。对于64位库,32位库“64”的响应为“32”,对于未知数据模型,响应为“未知”。
此内部系统属性仅返回Oracle JVM的值。