分享:写了一个 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

最新文章

  1. localStorage与sessionStorage 的区别
  2. 51nod1228 序列求和(自然数幂和)
  3. python学习笔记之基础一(第一天)
  4. [问题2014A02] 解答一(两次升阶法,由张钧瑞同学、董麒麟同学提供)
  5. 批处理运行python
  6. Ubuntu系统如何卸载并安装新版本的jdk(permission denied问题)
  7. Learning How to Learn, Part 1
  8. (Struts2)XWork容器的实现机理
  9. Python_面向对象基础
  10. Ubuntu16.04下的NetCore环境搭建(附录含Ubuntu 18.04 安装 NetCore2.1)
  11. 小学生四则运算App实验成果
  12. $PollardRho$ 算法及其优化详解
  13. 斯特林公式 ——Stirling公式(取N阶乘近似值)(转)
  14. 关于Vue中的 render: h =&gt; h(App) 具体是什么含义?
  15. Android开发——高斯模糊效果的简单实现
  16. Unix awk使用手册
  17. ASE加解密算法详细介绍
  18. struts2框架值栈的概述之问题一:什么是值栈?
  19. mysql 命令行查看数据库、创建数据库、选择数据库、删除数据库
  20. C语言实现随机数

热门文章

  1. configparser配置文件操作
  2. .NET技术大系概览 (迄今为止最全的.NET技术栈)
  3. 深入浅出Symfony2 - 结合MongoDB开发LBS应用
  4. command line
  5. C# 中科学计数法转成正常值
  6. sql通用的存储过程
  7. [php-src]窥探Php内核中的数组与面向对象
  8. 如何搭建lamp(CentOS7+Apache+MySQL+PHP)环境 [转]
  9. android杂记
  10. 【Mail】邮件的基础知识和原理