Java中使用JNI调用DLL
1 编写范例文档
/**
* @Package:
* @Title: TestNative.java
* @Author: zhangzuoqiang
* @Time: 5:08:48 PM Sep 17, 2011
* @Version:
*/
/**
* @Description:
* @Author: zhangzuoqiang
* @Date: Sep 17, 2011
*/
public class TestNative {
private native int add(int x, int y);
public static void main(String[] args) {
TestNative hh = new TestNative();
int r = hh.add(30, 20);
System.out.println("result = " + r);
}
static {
System.loadLibrary("NativeDemo");
}
}
#include "TestNative.h"
#include <jni.h>
JNIEXPORT jint JNICALL Java_TestNative_add
(JNIEnv *ev, jobject obj, jint x, jint y)
{
return x+y;
}
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class TestNative */
#ifndef _Included_TestNative
#define _Included_TestNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: TestNative
* Method: add
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_TestNative_add
(JNIEnv *, jobject, jint, jint);
#ifdef __cplusplus
}
#endif
#endif
分享到:
相关推荐
在描述的"jni调用第三方dll最简单的实例"中,我们可能包含以下几个步骤: 1. **编写Java代码**:创建一个Java类,声明一个`native`方法,这个方法将被第三方DLL实现。例如: ```java public class NativeDemo { ...
4. **构建动态库**:使用合适的编译器(如Windows上的Visual Studio或Linux上的GCC)将C/C++源代码编译为动态链接库(如Windows上的`.dll`或Linux上的`.so`文件)。 5. **加载动态库**:在Java代码中,通过`System....
本教程将通过一个简单的例子来演示如何使用JNI调用DLL动态链接库。 首先,我们需要理解JNI的工作原理。JNI提供了一套接口,使得Java代码可以通过这些接口来调用本地(Native)代码,这里的本地代码可以是C、C++等...
在 C# 中,我们可以使用 Visual Studio 创建一个 DLL 项目,并在其中编写我们的代码。 在 JAVA 中,我们可以使用 JNI(Java Native Interface)来调用 C# 编写的 DLL 文件。JNI 是一个允许 JAVA 程序调用本地方法的...
例如,在Windows环境下,可以通过Microsoft Visual Studio完成这一工作。 #### 总结 通过JNI,我们可以实现C++调用Java类的功能。这种技术不仅拓展了两种语言的应用范围,也为开发者提供了更多的选择。然而,需要...
如果缺少jni.h,可能需要将JDK的include目录添加到Visual Studio的包含目录设置中。 编译C++项目,生成DLL文件(如HelloJni.dll)。将此DLL文件与Java的`.class`文件放在同一目录下,因为Java使用`System....
在Visual Studio 2005中,可以创建一个Win32动态链接库项目,并将头文件包含在项目中,然后实现本地方法并生成DLL。 实现sayHello()方法的C代码可能如下: ```c #include "com_tao_test_NativeTest.h" #include ...
接下来,使用Visual Studio或其他C/C++编译器编写DLL。在这个例子中,我们创建了一个简单的DLL,其源代码为`calldll.cpp`: ```cpp #include "stdafx.h" #include "javacall.h" BOOL APIENTRY DllMain(HANDLE ...