分享:写了一个 java 调用 C语言 开发的动态库的范例
2013-11-01 20:56
513 查看
分享:写了一个 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
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
相关文章推荐
- 查杀系统进程
- 二叉树遍历算法
- RSA加密算法c++简单实现
- C/C++内存泄漏及其检测工具
- C语言的那些事——sqrt()函数 和 double型数据的“%lf”
- C++ char*,const char*,string的相互转换
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- Visual c++ 项目开发案例 全程实录 源代码
- 分享:写了一个 java 调用 C语言 开发的动态库的范例
- 各种排序算法稳定性的总结
- C++宏定义错误
- [原]C语言基础
- [原]C语言基础
- 安卓程序代写 网上程序代写[原]C语言基础
- 配置sublime 编译运行c++
- 推荐五星级C语言学习网站
- Effective C++ 第二版 31)局部对象引用和函数内new的指针 32)推迟变量定义
- VS2010/VC++2010的相对路径问题
- c++中内存分配方式
- C语言指针见解一