windows下如何使用JNI调用C C++函数
来源:互联网 发布:南京行知基地住宿条件 编辑:程序博客网 时间:2024/05/17 23:17
1、首先创建java文件Test.java,内容如下:
package com.jni;
publicclassTest {
static { //静态代码块,在JVM加载类的时候执行
System.loadLibrary("Helloworld");
//Helloworld为C++代码生成的dll文件,注意不加文件格式名
}
publicnativevoid output() ;
//output()方法声明,使用native修饰,这个方法将由C++实现
publicstaticvoid main(Stringargs[]){//正常使用main()方法
Testtest=newTest() ;
test.output();
}
}
a)编译Test.java文件,生成Test.class Javac–d . Test.java
//编译生成Test.class到当前目录下,自动生成包com.jni
b)编译Test.class文件,生成com_jni_Test.h文件(com jni为包名)
Javah
若编译不成功,使用完整的编译方法:
若还是未成功,请自行查阅javah的使用方法
Java文件夹目录:
2 创建C++文件Helloworld.cpp,内容如下:
(使用MicrosoftVisual Studio 2010)
新建项目Helloworld
选择dll项
(3)将2.B生成的com_jni_Test.h文件复制到Projects/Helloworld工程存放头文件的文件夹
(3)将头文件com_jni_Test.h包含进Helloworld.cpp
(4)继续将jni.h和jni_md.h头文件包含进Helloworld.cpp,这两个头文件位于JDK\inlude文件夹下方法如下
a.右键点击项目名,属性
b.选择VC++目录—〉包含目录—〉编辑
c.添加..jdk\include文件夹和..jdk\include\win32文件夹
d.包含成功后,打开com_jni_Test.h文件,将内容复制到Helloworld.cpp文件中,
注意把冒号删除。
Helloworld.cpp代码:
#include"stdafx.h" #include"com_jni_Test.h"//将2.B生成的com_jni_Test.h文件复制到Projects/Helloworld工程存放头文件的文件夹#include<jni.h>//将jdk\include\jni.h复制到Projects/Helloworld工程存放头文件的文件夹#include<stdio.h>JNIEXPORTvoidJNICALL Java_com_jni_Test_output(JNIEnv *, jobject){ printf("Hello world") ;}
A.编译生成Helloworld.dll文件
B.将Helloworld.dll复制到..jdk\bin目录下
C.执行javac com.jni.Test,屏幕输出Helloworld,成功!
以上操作基于Windows XP,如使用其他操作系统可能会出现dll不兼容问题。使用Microsoft Visual Studio 2010 生成的dll文件为32位的要使用32位的JDK。
- windows下如何使用JNI调用C C++函数
- Windows下使用Java Jni调用C/C++初探
- Java使用JNI调用C/C++(windows和android平台)
- 学习JNI--Android下使用JNI调用C
- 学习JNI--Android下使用JNI调用C
- windows 下C/C++函数调用过程
- Android下用JNI让Java调用C函数
- Java如何调用C/C (JNI)
- Centos下Jni调用C++,不是C
- Android上,使用JNI调用C的函数,hellojni
- JNI 如何使用dlopen,dlsym调用第三方自定义的 .so库( JNI->C,C++)
- windows下java JNI编程技巧——JAVA调用c/c++(0)
- windows下java JNI编程技巧——JAVA调用c/c++(1)
- windows下java JNI编程技巧——JAVA调用c/c++(2)
- windows下java JNI编程技巧——JAVA调用c/c++(3)
- windows下java JNI编程技巧——JAVA调用c/c++(4)
- windows下java JNI编程技巧——JAVA调用c/c++(0) .
- windows下java JNI编程技巧——JAVA调用c/c++(1) .
- 权威披露2014微信十大最火谣言 | 调查称女性最爱传谣,你服不服?
- JSp文件修改不生效的解决办法
- Spring事务配置的五种方式
- 女人眼里,啥样男人最强悍?
- 很舒服的几句话,心静,人就不会累了
- windows下如何使用JNI调用C C++函数
- 如何用算法助你发表一些牛逼的论文
- ASP.NET MVC4 NInject 使用示例教程
- Android模拟点击,getevent,sendevent重现
- HTML温故知新1
- centos下挂载其他lvm
- 解决asp.net导出Excel报表时字符转成了数字科学计数法格式问题
- scrapy 安装 win7 64位
- navicat对表的字段的定义