java基本类库中调用的dll的具体实现在jdk的哪里

问题描述

如题。翻java源码时看到本地方法,只在java类中看到方法声明,但怎么也找到dll具体实现。上网查也没有头绪,求教各位大神

解决方案

解决方案二:
应该包含在Java可执行文件中,具体的实现是由操作系统决定。
解决方案三:
如果在Windows操作系统下,可以用下面的方法研究一下1)安装完整的MicrosoftVisualStudioC++这个步骤主要是要获得dumpbin.exe这个可执行文件我的机器上这个文件在下面这个位置C:ProgramFiles(x86)MicrosoftVisualStudio11.0VCbindumpbin.exe2)执行下面这样的命令dumpbin/EXPORTS"C:ProgramFilesJavajdk1.8.0binmsvcr100.dll"dumpbin/EXPORTS"C:ProgramFilesJavajdk1.8.0jrebinjava.dll"3)会得到类似下面这样的结果DumpoffileC:ProgramFilesJavajdk1.8.0binmsvcr100.dllSectioncontainsthefollowingexportsforMSVCR100.dll133153200082FCCatanDumpoffileC:ProgramFilesJavajdk1.8.0jrebinjava.dllSectioncontainsthefollowingexportsforjava.dll1569B00006018Java_java_lang_StrictMath_atan4)这样就能推断出,java.exe或者javaw.exe在运行的时候,通过调用java.dll来提供本地方法而这些本地方法的实现,有可能是在msvcr100.dll里实现的【在Windows平台,Oracle调用的微软的具体实现】5)至于java.dll和MSVCR100.dll之间的相互依赖关系可以用【DependencyWalker】工具打开java.dll查看如果你觉得1到4的过程过于麻烦,只想查看结果的话可以只下载【http://www.dependencywalker.com/】(600K左右)打开你自己机器上的java.dll就马上能明白了

时间: 2024-09-22 03:54:35

java基本类库中调用的dll的具体实现在jdk的哪里的相关文章

在SQL Server 2008中调用.net,dll

原文:在SQL Server 2008中调用.net,dll T-SQL的在执行普通的查询的时候是很高效的,但是在执行循环,判断这样的语句的时候效率就不那么的高了.这时可以借助CLR了,我们可以在SQL Server 2008中扩展C#程序来完成循环等过程式的查询,或者其他SQL不便实现的功能.这个随笔中将介绍在SQL Server中扩展C#程序实现正则表达式的替换功能. 新建一个类库程序命名为Regex,打开Visual Studio 2008,点击File,点击New,点击Project,在

stringbuilder-C#中调用C++Dll接口,字符串编码问题

问题描述 C#中调用C++Dll接口,字符串编码问题 在C#中调用C++Dll接口,接口返回一个多字节字符串,然后再C#中再次转码为宽字节字符串. 字符串内容都为汉字. **_问题: 如果汉字为偶数个,则一切正常: 如果汉字为奇数个,则C#获得的多字节字符串内容的最后一个字节被篡改成'?'的ascll码.(多字节编码时,每个汉字占三个字节) 本人没多少币,全部家当拿出来了,求大神指点.**_ C++代码: // 宽字节转多字节 __declspec(dllexport) void TCharTo

delphi-替换Delphi中调用的dll

问题描述 替换Delphi中调用的dll 在一段Delphi编写的dll中调用了另外一个一个A.dll,现在想将这个A.dll替换为自己写的B.dll.只是知道A大概的功能,B是自己写的,中间需要注意些什么? 解决方案 用depend看下导出表,有什么函数名,函数序数,然后用ollydbg之类的工具调试,看看参数是怎么传的,通过堆栈可以分析出来. 然后自己照着写. 解决方案二: Delphi 调用VC的DLLDelphi调用DLL中的接口Delphi调用DLL中的接口

C#如何将一个方法公开出去,先在一个类库中声明生成dll后,在主程序中实现,求如何实现

问题描述 C#如何将一个方法公开出去,先在一个类库中声明生成dll后,在主程序中实现,求如何实现 就是主程序的一个方法 继承类库声明的方法后 通过类库生成的dll公开出去,主程序要如何让实现类库中声明的方法 解决方案 插件引用主程序可以了,也可以做一个公共的dll,插件和主程序都引用它. 在这个dll或者主程序中定义接口或者抽象类,在插件中实现或者继承

java中调用GDAL DLL的实现方法_java

步骤:1.编译GDAL(编译过程忽略).2.将编译过后的动态链接库拷贝到{JAVA_HOME}\jre\bin目录下,如下图:   3.将编译过后的gdal.jar引入java工程,测试调用,代码如下: 复制代码 代码如下:       @Override    protected boolean doIsAvailable() throws Throwable {        System.loadLibrary("gdaljni");        return true;   

asp中调用.net dll文件方法

1. 在.net Visual Studio 中新建一个Class项目. 2. 在项目中新添加一个类,代码如下:  代码如下 复制代码 using System; namespace ClassLibrary1 {    //定义接口,这点很重要 (此接口中的方法与COM组件中的方法一致)     public interface iClass1     {         string   test()   ;     }     public class Class1 : iClass1  

c# 中调用advapi32.dll中的 RegCreateKeyEx如何定义

问题描述 能不能给个c#的实际例子?谢了 解决方案 解决方案二:[System.Runtime.InteropServices.DllImport("advapi32.dll")]privatestaticexternintRegCreateKeyEx(uinthKey,stringlpSubKey,uintReserved,stringlpClass,uintdwOptions,uintsamDesired,uintlpSecurityAttributes,refuintphkRes

c# 中调用advapi32.dll中的 RegQueryStringValue 如何定义,不知那错了

问题描述 给个c#实例,谢了我是这样定义的,可就是取不出值,[DllImport("advapi32.dll",EntryPoint="RegQueryValueExA",CharSet=CharSet.Ansi,SetLastError=true,ExactSpelling=true)]publicstaticexternintRegQueryStringValue(inthKey,stringlpValueName,intlpReserved,refintlpT

在Java程序中调用C函数--打印"HelloWorld"

源地址:http://java.sun.com/docs/books/jni/html/start.html#26346 本文是将书中的第二章单独抽出来,红色部分为译者注. 1.概述 这个打印的过程是用JDK或Java 2 SDK写一个简单的Java程序,程序会调用一个C函数打印"HelloWorld".这个过程将包括以下步骤: 创建一个Java类(HelloWorld.java),以及定义一个native方法. 使用javac去编译这个HelloWorld源文件,生成HelloWor