分享:写了一个 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. 图片javascript缩小

    function SetSize(obj, width, height) { myImage = new Image(); myImage.src = obj.src; if (myImage.wid ...

  2. sql 通过表名获取所有列名

    因为要做数据迁移,也就是业务数据库的数据要迁移到历史数据库,这两个数据库理论上表结构是一样的,但因为时间原因,可能业务库升级了表结构,但历史库没有升级,且加字段的顺序不一样,导致 insert int ...

  3. .net stream

    流的抽象基类Stream:Stream 是所有流的抽象基类.流是字节序列的抽象概念,例如文件.输入/输出设备.内部进程通信管道或者 TCP/IP 套接字.Stream 类及其派生类提供这些不同类型的输 ...

  4. MAC npm 需要管理员权限问题

    我们在进行mac 命令行安装软件的时候,有的时候会遇见这样的问题:Please try running this command again as root/Administrator. 如图: 解决 ...

  5. leetcode解题:Add binary问题

    顺便把之前做过的一个简单难度的题也贴上来吧 67. Add Binary Given two binary strings, return their sum (also a binary strin ...

  6. AC算法 及python实现

    零 导言 软件安全课上,老师讲了AC算法,写个博客,记一下吧. 那么AC算法是干啥的呢? ——是为了解决多模式匹配问题.换句话说,就是在大字符串S中,看看小字符串s1, s2,...有没有出现. AC ...

  7. 一种模拟position: sticky;的方法

    直接上代码,本例采用了jQuery来进行介绍 CSS部分: .sticky { position: fixed; top: 0; } JS部分: var stickyBar = $('.sticky- ...

  8. MySQL 分区表

    转载自MySQL 分区表 今天统计数据的时候发现一张表使用了表分区,借此机会记录一下. 1. 什么是表分区? 表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分.从逻辑上看, ...

  9. PD4F将HTML转换为PDF乱码问题

    修改pd4fonts.properties文件如下: KaiTi_GB2312=SIMKAI.TTFSimSun=SIMKAI.TTF

  10. 【13-Annotation】

    Annotation 5个基本的Annotation •@Override •@Deprecated •@SuppressWarnings •@SafeVarargs •@FunctionalInte ...