一旦从java加载了例如库的架构(32位或64位),是否可以获取有关 native 库的信息。
用途:在运行时向用户显示库版本和库架构。
最佳答案
所有 native 库(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
关于java - 加载后是否可以获取 native 库信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12517434/