首先说明一下Java调用C程序的过程,下面这些内容从网上搜索到的结果:
转自:http://liufei-fir.iteye.com/blog/776326
用java调用dll本是一个不难的事情,但往往会给初学者带来的一点麻烦,网络上很多调用dll的例子都参差不齐,往往省略了一些步骤,对他们来说觉得简单不需要说明,对初学者来说确很重要,结果不想可知。因此在这里仔细的说明一下,希望给初学者们带来些许方便,高手绕过。。
一,首先在C盘建立项目文件夹jnitest,然后建立hello文件夹,在hello文件夹下放入Test.java,即在
C:\jnitest\hello下放入Test.java,
Test.java的内容为:
package hello;
class Test {
static {
System.loadLibrary(“TestDll”);
}
public static void main(String ar[]) {
System.out.println(“Hello world from Java”);
Test t = new Test();
int a = 1, b = 1;
int c = t.add(a, b);
System.out.println(c);
}
public native int add(int a, int b);
}
二,启动cmd命令行工具,切换到项目文件夹的目录(C:\jnitest>),然后输入javac hello\Test.java,即cmd最终显示为:C:\jnitest>javac hello\Test.java,接着执行C:\jnitest>javah hello.Test。所有命令
都注意下大小写。最终会在C:\jnitest下生成hello_Test.h头文件。
三,打开Vc++ 6.0,新建-》工程-》Win32 Dynamic-Link Library,工程名称为TestDll,点确定,然后
选择“一个简单的DLL工程”,按完成。
四,将hello_Test.h拷贝到VC的TestDll项目的文件夹下,在VC6.0界面中左方导航中选择“FileView”选择
Header Files点右键-》添加文件到目录,然后选中hello_Test.h。
五,打开TestDll.cpp,修改内容为:
// TestDll.cpp : Defines the entry point for the DLL application.
//
#include “stdafx.h”
#include “hello_Test.h”
JNIEXPORT jint JNICALL Java_hello_Test_add
(JNIEnv *, jobject, jint a, jint b)
{
return a+b;
}
六,点菜单“工具”-》选项-》目录,这里应添加jdk的头文件路径,添加两个。我的为H:\JDK1.5.0_16
\INCLUDE和H:\JDK1.5.0_16\INCLUDE\WIN32。
七,编译项目文件。
八,将编译生成的TestDll.dll拷贝到和hello_Test.h相同的目录下,在我这边既是C:\jnitest。(既C:\jnitest下有TestDll.dll和hello_Test.h)。
九,在cmd命令行C:\jnitest>下输入java hello.Test,即可看到结果。
十。输出为:Hello world from Java
2
这里补充说明的是,上述方法采取了命令行编译的方式,直接将dll放入.class文件所在文件夹,如果是使用eclipse,那么就需要将dll导入到工程中,具体的步骤如下:右单击项目名→导入→常规→文件系统→下一步→浏览→选择DLL文件所在目录→确定→勾选DLL文件→完成.
如果在得到dll后运行程序,出现no XXX in java.library.path异常,则说明dll没有找到,此时使用dll
相关推荐
JNI,全称为Java Native Interface,即Java本地接口,JNI是Java调用Native 语言的一种特性。通过JNI可以使得Java与C/C++机型交互。即可以在Java代码中调用C/C++等语言的代码或者在C/C++代码中调用Java代码。由于JNI...
在提供的选项中,正确的方法是D:`public static void main(String args[])`,因为`main`方法是Java程序的入口点,可以在这里创建并启动新线程。 3. 访问权限与继承: 这道题考察了Java的访问修饰符和继承。`...
9. **调用DLL**: 文章虽然没有深入讲解如何从Java调用创建的DLL,但通常会涉及到创建Java的本地方法,定义`JNIEXPORT`修饰的函数,这些函数再调用DLL中的实际函数。通过JNI头文件自动生成的Java本地方法声明,可以将...
Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 Chap 3:javah命令帮助信息......Chap 4:用javah产生一个...Chap5:使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能... 47 Chap9:如何编写jni方法(转载)... 55
JNA通过动态库加载和类型映射,使得Java程序能够方便地调用C库函数。其核心原理在于创建一个Java接口,该接口的方法对应于本地库中的函数,然后JNA会自动处理参数的转换和调用过程。 JNA的优势包括: 1. **易用性*...
2、实例二、调用c 语言用户定义的函数... 58 3、实例三、在jni函数中访问java类中的对象实例域... 58 4、实例四:在jni函数中访问类的静态实例域... 60 5、实例五:在jni函数中调用java对象的方法... 60 6、实例...
4. 介绍Java中带参数方法的使用,强调定义和调用过程,指出参数可以是任意类型,包括基本类型和引用类型,但返回值可以为`void`,表示无返回值。 5. 给出的代码片段展示了条件判断语句`if-else`的使用,以及布尔...
MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...
Objective-C 是一种面向对象的编程语言,它是 C 语言的扩展,主要被苹果公司用于开发 macOS 和 iOS 平台的应用程序。以下是对标题和描述中提到的一些知识点的详细解释: 1. **开始吧**: - **下载这篇教学**:这...
2. **【Ctrl+Shift+T】**:在工作空间中查找Java类,支持通配符,方便快速定位所需类。 3. **【Ctrl+Shift+R】**:类似【Ctrl+Shift+T】,但搜索所有文件,同样接受通配符。 4. **【Ctrl+Shift+G】**:查找类、...
关于本站“设计模式” Java 提供了丰富的 API,同时又有强大的数据库系统作底层支持,那么我们的编程似乎变成了类似积木的简单"拼凑"和调用, 甚至有人提倡"蓝领程序员",这些都是对现代编程技术的不了解所至. 在...
3. NDK带来的益处:NDK可以让C或C++语言开发者快速加入Android平台的应用开发,同时也能让Java开发者通过JNI(Java Native Interface)更加方便地调用底层操作和处理性能敏感的任务。 4. 开发环境的部署:文档中...
C#,全称C Sharp,是由微软公司为.NET框架开发的一种面向对象的编程语言,它的设计目标是简洁、类型安全和性能高效。C#语言借鉴了C++和Java的许多特性,并引入了诸如垃圾回收、类型接口、匿名方法等现代编程理念。 ...
Drawable:程序调用的图标以及各种图片; layout-land:竖版界面xml描述文件; layout-port:横版界面xml描述文件; menu:菜单布局xml描述文件; values:字符串资源定义,我们要汉化的绝大部分工作就在这里面; ...
2.2 启动RCP程序 .............................................................................................................................. 15 2.3 程序VS 产品 .........................................