1.编写java类
package com;
public class TestDll {
static {
System.loadLibrary("test");
}
public native void sayHello(String msg);
public static void main(String[] args) {
new TestDll().sayHello("hello");
}
}
2.编译成class
3.调用javah生产头文件(.h)
调用javah文件时,需要在cmd命令行模式里面进入bin文件夹,里面存放着工程中所有的.class文件。随后调用:javah -classpath . -jni 包名.类名。
例:
javah -classpath . -jni com.TestDll
4.生成test.dll
a) VS2010
1:新建一个工程test,选择Win32工程,next
2:选择dll工程 finish就可以了
3:删除test.cpp文件,将TestJNI.h添加为工程头文件,先将com_TestDll.h拷到工程目录下,然后在header files 文件夹右键--->add --->existing item,将com_TestDll.h加入
4:打开StdAfx.h文件,再最后面添加:
#include "com_TestDll.h"
5:编辑StdAfx.cpp,加入
JNIEXPORT void JNICALL Java_com_TestDll_sayHello
(JNIEnv * evn, jobject obj, jstring message)
{
printf("call c++ ok");
}
6:打开工程属性,选择Configuration Properties --->VC++ Directories--->include Directories 添加jdk路径下的include和/include/win32目录,这里包含jni.h等头文件,如果不包含这两个目录,工程中的#include<jni.h>将无法找到所包含的文件
7:build工程,打开工程目录的debug目录,将其中生成的test.dll复制到eclipse工程的根目录即可,运行TestDll,控制台显示call c++ ok
b)VS2005
6:Tools->Options->Projects and Solutions->VC++ Directories,in the drop down select "include files" and add an entry there...(jni.h)
c)VC6
1:新建一个项目test, 项目类型为Win32 Dynamic-Link Library。点击OK
2:在弹出的窗口中选择A simple DLL project,点击Finish。
3:打开项目所在的文件目录,将生成的com_TestDll.h文件复制到此目录。点击左边中间的FileView,切换到文件浏览模式。在Header Files上点击右键,选择Add Files to Folder…。选择com_TestDll.h文件,点击OK。
4:打开StdAfx.h文件,再最后面添加:#include "TestHello.h"
5:打开StdAfx.cpp,在最后面添加一段代码:
JNIEXPORT void JNICALL Java_com_TestDll_sayHello
(JNIEnv * evn, jobject obj, jstring message)
{
printf("call c++ ok");
}
6:在VC的菜单上选择Tools-Options…,打开选项对话框。在Directories文件夹,添加上jdk所在文件夹下的include和include\win32文件夹。
7:点击VC上的菜单项Build-Build All,在VC项目Debug文件夹中生成test.dll,复制到eclipse工程的根下。
分享到:
相关推荐
08_12_JNI_02_jni数据类型&属性方法08_12_JNI_02_jni数据类型&属性方法08_12_JNI_02_jni数据类型&属性方法08_12_JNI_02_jni数据类型&属性方法08_12_JNI_02_jni数据类型&属性方法08_12_JNI_02_jni数据类型&属性方法08...
08_17_JNI_04_JNI引用&缓存策略08_17_JNI_04_JNI引用&缓存策略08_17_JNI_04_JNI引用&缓存策略08_17_JNI_04_JNI引用&缓存策略08_17_JNI_04_JNI引用&缓存策略08_17_JNI_04_JNI引用&缓存策略08_17_JNI_04_JNI引用&缓存...
android-aes-jni, 用于 jni& Java的Android AES示例 android-aes-jni git clone https://github.com/panxw/android-aes-jni.git cd android-aes-jni ndk-build
JNI入门Demo3.0,用于演示JNI中是如何动态注册Native函数。
JNI(Java native interface)入门知识
JNI入门学习第一篇:HelloWorld,主要是介绍操作步骤。
C入门&&JNI; 自己整理的,不全,自己理解。
JNI入门教程之HelloWorld篇(详细版).
使用JNI,vs2010 生成dll, JSP中调用dll 中创建的工程和vs2010下用于生成dll的工程代码
JNI入门教程之HelloWorld篇 它用来描述硬盘信息 所有本地代码必须用本地关键词声明,成为Java类的成员
JNI_VC6_Opencv做的图片转视频dll,其中的def有输出函数名,可以修改;在VC6下可直接编译通过;直接在eclipse中配置好后可以直接调用生成的dll。 遇到这方面需求,可以寻求帮助:415926459
jni入门
JNI和NDK的关系:在Android开发环境中,JNI是实现的目的,NDK是实现JNI的手段,即通过NDK实现JNI功能
自己写的JNI入门Demo,适合入门的同学看看
Java Native Interface的入门级学习demo,完美的解决了java.library.path中找不到动态库的问题,并解决了windows和linxu的兼容问题,使得这个项目打包成jar包后,能够直接在windows或Linux的java代码中调用
jni示例vs2005 c++实现,有c++项目源文件,供大家参照,在java目录中直接运行,java TestJni 出效果!
JNI入门教程之HelloWorld篇 对于学习JNI入门很有帮助
JNI入门Demo2.0,用于演示JNI中是如何反调用Java方法的
java JNI 技术从入门到精通 JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java 1.1开始
JNI入门Demo1.0,用于演示Java代码是如何调用到C++代码