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工程的根下。
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工程的根下。