Java标准库如何与本机代码通信?
他们会用Mono的PInvoke吗?还是更像是在运行时启动之前注册的内部调用?java是否有一个基本库来处理诸如mscorlib.dll之类的本机调用?如果我想在C代码中调用JVM,它的库会查找.so/.dll文件吗?如果我静态链接所有的JRE本地库,会对Java标准库产生影响吗 他们使用JNI来调用特定平台的本机共享库,这与公开文档中所描述的完全一样 就从C代码调用JVM而言,JVM使用共享库(DLL、SO等)。快速搜索JDK 6源代码不会发现任何System.loadLibrary()的核心本机支持(如Object、String等中的本机方法)。这对我来说意味着,这些方法的本机代码(从JRE/bin目录的内容来看,似乎在DLL中)是由java.exe(以及Windows中的javaw.exe)显式链接的Java标准库如何与本机代码通信?,java,jvm,java-native-interface,jvm-hotspot,Java,Jvm,Java Native Interface,Jvm Hotspot,他们会用Mono的PInvoke吗?还是更像是在运行时启动之前注册的内部调用?java是否有一个基本库来处理诸如mscorlib.dll之类的本机调用?如果我想在C代码中调用JVM,它的库会查找.so/.dll文件吗?如果我静态链接所有的JRE本地库,会对Java标准库产生影响吗 他们使用JNI来调用特定平台的本机共享库,这与公开文档中所描述的完全一样 就从C代码调用JVM而言,JVM使用共享库(DLL、SO等)。快速搜索JDK 6源代码不会发现任何System.loadLibrary()的核心
当我最后一次看这篇文章时,从C代码调用JVM的需求是JNI中一个有很好文档记录的部分——我强烈建议您参考该文档以进一步进行。我们甚至成功地为IBM as/400 Java 1.1 JVM编写了一个本机C包装器/加载器。他们使用JNI,正如公开记录的那样,为特定平台调用本机共享库 就从C代码调用JVM而言,JVM使用共享库(DLL、SO等)。快速搜索JDK 6源代码不会发现任何System.loadLibrary()的核心本机支持(如Object、String等中的本机方法)。这对我来说意味着,这些方法的本机代码(从JRE/bin目录的内容来看,似乎在DLL中)是由java.exe(以及Windows中的javaw.exe)显式链接的
当我最后一次看这篇文章时,从C代码调用JVM的需求是JNI中一个有很好文档记录的部分——我强烈建议您参考该文档以进一步进行。我们甚至成功地为IBM as/400 Java 1.1 JVM编写了本机C包装器/加载器。他们使用Java本机接口(JNI)
我从未从C调用过JVM,所以我不知道这一点。他们使用Java本机接口(JNI)
我从未从C调用过JVM,所以我不知道这一点。这里有一个关于如何从C程序内部启动JVM的示例:
这里有一个关于如何从C程序内部启动JVM的示例: “提供Java程序轻松访问本机共享库(Windows上的DLL),而无需编写Java代码”(引用自其主页) 到目前为止,我个人从未尝试过。“提供Java程序轻松访问本机共享库(Windows上的DLL),而无需编写Java代码”(引用自其主页) 到目前为止,我个人从未尝试过