JAVA用JNI方法调用C代码实现HelloWorld
一、首先是java运行环境的搭建,到官网下载java jdk安装即可(注意要修改环境变量)。还可以顺便安装eclipse。
二、编写java代码,文件名HelloWorld.java
public class HelloWorld {
public native void displayHelloWorld();
public static void main(String[] args) {
HelloWorld hw = new HelloWorld();
hw.displayHelloWorld();
}
static{
System.loadLibrary("hello");
}
}
三、编译: javac HelloWorld.java (生成.class文件)
javah HelloWorld(生成.h文件)
将HelloWorld.h中的#include <jni.h>改成#include “jni.h”。否则vc生成dll编译的时候可能产生问题。
四、编写C代码。文件名HelloWorld.c
#include "jni.h"
#include "HelloWorld.h"
#include <stdio.h> JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject this)
{
printf(" hello 2340");
return;
}
在命令行下执行cl HelloWorld.c -Fehello.dll -MD -LD
即可生成hello.dll
五、运行程序:java HelloWorld
参考链接:http://blog.csdn.net/mingjava/article/details/180946
http://www.cnblogs.com/BloodAndBone/archive/2010/12/16/1908509.html
JAVA用JNI方法调用C代码实现HelloWorld的更多相关文章
- Android 通过 JNI 访问 Java 字段和方法调用
在前面的两篇文章中,介绍了 Android 通过 JNI 进行基础类型.字符串和数组的相关操作,并描述了 Java 和 Native 在类型和签名之间的转换关系. 有了之前那些基础,就可以实现 Jav ...
- java 用JNA方法调用C++动态链接库
JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架.非常强大.易用,功能上类似与.NET的P/Invoke.你只 ...
- JAVA中native方法调用
在Java中native是关键字.它一般在本地声明,异地用C和C++来实现.它的声明有几点要注意:1)native与访问控制符前后的关系不受限制.2)必须在返回类型之前.3)它一般为非抽象类方法.4) ...
- Java RMI 远程方法调用
Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...
- java多态/重载方法——一个疑难代码引发的讨论
直接上代码,看这个代码发现自己的基础有多差了.参考 http://www.cnblogs.com/lyp3314/archive/2013/01/26/2877205.html和http://hxra ...
- Java RMI远程方法调用
RMI(远程接口调用) 1. RMI的原理: RMI系统结构,在客户端和服务器端都有几层结构. 方法调用从客户对象经占位程序(Stub).远程引用层(Remote Reference Layer)和传 ...
- java通过JNI接口调用C语言-初级
JNI(java native interface):即java本地调用C的接口. 先看整体运行: 下面是过程: #vim test.java public class test{ public na ...
- 【Java基础】方法调用机制——MethodHandle
MethodHandle是Java7引入的一种机制,主要是为了JVM支持动态语言. 一个MethodHandle调用示例 共有方法调用 首先,演示一下最基本的MethodHandle使用. 第一步:创 ...
- 使用scala通过JNI技术调用c++代码
scala代码编写 Sample1.scala class Sample1 { // --- Native methods @native def intMethod(n: Int): Int def ...
随机推荐
- <td style="word-break:break-all"> 在html中控制自动换行
在html中控制自动换行 其实只要在表格控制中添加一句 <td style="word-break:break-all">就搞定了. 其中可能对英文换行可能会分开一 ...
- Android UI设计
Android UI设计--PopupWindow显示位置设置 摘要: 当点击某个按钮并弹出PopupWindow时,PopupWindow左下角默认与按钮对齐,但是如果PopupWindow是下图的 ...
- [每日一题] 11gOCP 1z0-052 :2013-09-10 ABOUT ALERTS...............................................A50
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/11546561 正确答案:AD 使用服务器生成的警报系统,从Oracle10g版本开始,Or ...
- iOS设计模式——MVC(Model-View-Controller)
Modol View Controller(MVC)是一种最早的也是最成功的可重用的设计模式,70年代的时候首次在smaltalk编写的程序中成功使用.基于MVC设计 模式,Cocoa整体架构可以划分 ...
- Jquery简单动画的实现记录
<div style="background:#98bf21;height:100px;width:100px;"> //从元素当前所在位置,往下消失 $(docume ...
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一)
作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File. ...
- CXF详细介绍
首先介绍下CXF的拦截器:简单地说,CXF使用流水线型(或者说总线型)处理机制,它的核心是一个Bus.一个客户端的请求或者一个对客户端桩代码的调用被组织成为一个Message.同时,所有的CXF功能都 ...
- IOS 表视图(UITableVIew)的使用方法(7)表视图的编辑功能(拖拉调整排序位置)
除了每个单元行左边的删除和新增图标,UITableView还支持在单元行的右侧显示一个供用户拖拉调整排序位置的控件. 不过如果要显示此控件,UITableView的数据源需要实现以下的方法. -(vo ...
- 常见排序算法C++总结
看了总结图,我这里就总结一下 直接插入排序,冒泡排序,快速排序,堆排序和归并排序,使用C++实现 重新画了总结图 直接插入排序 整个序列分为有序区和无序区,取第一个元素作为初始有序区,然后第二个开始, ...
- windows 7 里面的iis在哪里
我的电脑------控制面板-----卸载程序------打开或关闭WINDOWS功能-----INTERNET信息服务------WEB管理工具下就能找到 给你找图你看看 向左转|向右转