分享:写了一个 java 调用 C语言 开发的动态库的范例

cfunction.h   代码
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
int Sum(int ma, int mb);
int Sum1();
#ifdef __cplusplus
}
#endif
cfunction.c  代码
#include <windows.h>
#include <time.h>
#include "jni.h"
#include "cfunction.h"
int Sum(int ma, int mb)
{
return ma + mb;
}
int Sum1()
{
return 10;
}
JNIEXPORT jint JNICALL Java_test_Sum(JNIEnv *env, jobject obj, jint ma, jint mb)
{
return Sum(ma, mb);
}
JNIEXPORT jint JNICALL Java_test_Sum1(JNIEnv *env, jobject obj)    
{
return Sum1();
}
cfunction.def  定义
LIBRARY "CLib"
EXPORTS  
Sum @1
Sum1 @2
编译输出 Clib.dll
注意上面两个函数的命名:Java_test_Sum 和 Java_test_Sum1 在 java 中要调用的方法名其实是 Sum 和 Sum1 但是在 C定义的时候必须是: Java_+Java 的类名 + _方法名,所以这里需要大家配合
以下是 java 调用代码

//具体运行时间可将 Clib.dll 放在与执行程序相同的目录即可
//编译方式:javac test.java 编译之后即可运行: java test 输入输出一切正常!
//java 版本在windows各个平台上测试通过!
test.java 代码
class test {
public native static int Sum(int ma, int mb);
static
   {
       System.loadLibrary("Clib");
   }
public native static int Sum1();
static
{
System.loadLibrary("Clib");
}
public static void   main(String   argv[])
{
   System.out.println("结果如下:\r\n"+Sum(3,2)+"\n");
   System.out.println("结果如下:\r\n"+Sum1()+"\n");
}
}
执行结果:

更多详情:>>http://kan.weibo.com/con/3639866932723815

完全由本人开发,有任何疑问,请联络:
QQ群:74965947, 72133568,27236303,16592133,204725117,204724518

分享:写了一个 java 调用 C语言 开发的动态库的范例的更多相关文章

  1. JAVA调用C语言写的SO文件

    JAVA调用C语言写的SO文件 因为工作需要写一份SO文件,作为手机硬件IC读卡和APK交互的桥梁,也就是中间件,看了网上有说到JNI接口技术实现,这里转载了一个实例 // 用JNI实现 // 实例: ...

  2. 我写了一个java实体类,implements了Serializable接口,然后我如何让serialversionUID自动生成

    写了一个java实体类,implements了Serializable接口,让serialversionUID自动生成方法: 1.点击类旁边的警告符号: 2.选择Add generated seria ...

  3. 3、Java调用C语言(JNA法)

    这个方法挺方便的……(改写“二.Java调用C语言(JNative法)“的例子) 一.访问https://github.com/twall/jna ,下载jna-4.1.0.jar(版本不同名字不同) ...

  4. 师兄写的一个JAVA播放器的源代码(转)

    师兄写的一个JAVA播放器的源代码 MediaPlayer.java------------------------------------------------------------------ ...

  5. 通过搭建一个精简的C语言开发环境了解一个C程序的执行过程

    一.如何搭建一个精简的C语言开发环境 准备:下载TC2.0,并解压,比如说“d:\tc2.0\tc”目录 1.在C盘建立一个目录minic c:\ md minic 2.从解压的目录中将以下文件拷贝到 ...

  6. 研究实验1_搭建一个精简的C语言开发环境(包含部分经典的前言)

    综合研究:      在这部分内容中,将启示我们如何进行独立研究和深度思考(一定要注意这一点,相应的调整自己的学习思想).同时使我们:          (1)认识到汇编语言对于深入理解其他领域知识的 ...

  7. C语言学习笔记--动态库和静态库的使用

    1.C语言中的链接器 (1)每个 C 语言源文件被编译后生成目标文件,这些目标文件最终要被链接在一起生成可执行文件. (2)链接器的主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正 ...

  8. Golang调用windows下的dll动态库中的函数

    Golang调用windows下的dll动态库中的函数 使用syscall调用. package main import ( "fmt" "syscall" & ...

  9. Golang调用windows下的dll动态库中的函数 Golang 编译成 DLL 文件

    Golang调用windows下的dll动态库中的函数 package main import ( "fmt" "syscall" "time&quo ...

随机推荐

  1. Nginx配置upstream实现负载均衡

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

  2. Oracle DBA常用查询

    Oracle DBA常用查询 –1. 查询系统所有对象select owner, object_name, object_type, created, last_ddl_time, timestamp ...

  3. [python] os.path说明

    os.path - Common pathname manipulations操作 This module implements some useful functions on pathnames. ...

  4. 新版Xcode无法新建iOS空项目解决方案

    --感谢同学分享-- 操作说明: 拷贝Empty Application.xctemplate文件夹至   /Contents/Developer/Platforms/iPhoneOS.platfor ...

  5. rsync排除文件同步

    排除扩展名为log的文件 rsync -ave ssh --exclude '*.log' root@192.168.168.188:/website/abc.com/* /website/abc.c ...

  6. Spark如何使用Akka实现进程、节点通信的简明介绍

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  7. 通过反射及注解的运用获取SQL语句

    import java.lang.reflect.*; public class BeanUtil { //这是拼接查询SQL语句的方法(getDelectSQL) public static Str ...

  8. maven SpringMVC easyUI项目创建

    在Eclipse中使用Maven创建SpringMVC项目,项目所需软件及工具可以在官网下载.Maven.Nexus及Eclipse集成Maven等到此配置完毕. 1.Maven创建Web项目. 打开 ...

  9. vim的批量注释与删除注释

    vim的批量注释与删除注释 方法一:块选择模式 批量注释: Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的I进入行首插入模式输入注释符号如 // 或 #,输入完毕之后,Vi ...

  10. Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能

    视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器. 多媒体视频处理工具FFmpe ...