java调c的接口_Java调用C接口的简单示例

Java调用C接口的简单示例

正好需要用到Java调用dll里的C接口,想到自己做个简单的例子。我们可能需要自己生成dll文件,下边介绍一下,详细的步骤。主要参考https://blog.csdn.net/bingjia103126/article/details/76640464

1、在本地新建一个文件夹,用于以后存放 c project

2、在Dev c++里面新建一个C语言的DLL项目,会自动生成必要的.h、.c以及其他文件。

2、如果不做任何修改,直接编译

3、在eclipse中创建一个project, 并创建一个java程序,注意导入依赖包jna-4.4.0.jar。

import com.sun.jna.Library;

import com.sun.jna.Native;

public class JNAExample {

public interface CLibrary extends Library {

CLibrary INSTANCE = Native.loadLibrary("world", CLibrary.class);

void HelloWorld();

}

public static void main(String[] args) {

CLibrary.INSTANCE.HelloWorld();

}

}

View Code

4、将dev-c++中编译的world.dll copy到eclipse project的bin目录中

5、运行JNAExample,下图为运行结果。

补充:如果想运行最简单的直接打印在标准输出的hello world,可以

1、修改.h和.c文件

hello.h

#ifndef _HELLO_H_

#define _HELLO_H_

#if BUILDING_DLL

#define DLLIMPORT __declspec(dllexport)

#else

#define DLLIMPORT __declspec(dllimport)

#endif

DLLIMPORT void HelloWorld();

#endif

View Code

hello.c

#include "hello.h"

#include stdio.h

DLLIMPORT void HelloWorld()

{

printf("Hello, World! \n");

}

View Code

运行结果如下:

Java调用C接口的简单示例 相关文章

Java方法学习003方法的重载

方法的重载 例子: public static void main(String[] args) { int max = max(10, 20); //int更改为double就走第一个方法 //不改则为第二个int方法 System.out.println(max); } //比大小 public static double max(double num1,double num2){ double result=

ssh在本地调用远程主机上的命令,不登录远程主机shell

需求描述 : 在实际shell脚本的编写过程中,需要通过ssh远程执行一个命令,并返回执行的结果 简单来说,就是将命令发送到远程的主机上进行执行,但是并没有实际的登录到远程主机上。即通过 ssh的方式本地调用远程的命令。 实现方法 : 通过下面脚本测试通过s

Java方法学习001

Java方法 前两天去亲家家里了,没空更新 System.out.println() //System指一个系统的类 //out指输出对象 //println()指方法(这句话的意思是调用System类里的标准输出对象out中的方法println()) Java方法是语句的集合,它们在一起执行一个功能 方法是解决一

Java 装饰者模式

什么是装饰者模式 在不改变原对象的基础上,附加新功能,相比生成子类更加灵活 装饰者模式应用场景 动态给一个对象添加或撤销功能 优点 可以在不改变对象的情况下动态的扩展功能,可以使扩展的多个功能按想要的顺序执行,以实现不同的效果。 缺点 扩展类变多

javascript的小技巧

1.parseInt太小的数字会产生bug parseInt(0.00000000454); // 4 parseInt(10.23); // 10 2.计算 1 + null// 1 1 + undefined// NaN Number(null) // 0 Number(undefined) // NaN 3.实参 arguments 和形参会保持同步关系 function test(a, b, c) { console.lo

Javascript 数组对象常用的API

常用的JS数组对象API ES5及以前的Api ECMAScript5 为数组定义了5个 迭代方法 ,每个方法接收两个参数, 一个是每项运行的函数,一个是运行该函数的作用域对象(可选项),传入这些方法的函数会接收三个参数:数组项的值,该项在数组中的位置,数组对象本身。 /

IDEA插件:快速删除Java代码中的注释

背景 有时,我们需要删除Java源代码中的注释。目前有不少方法,比如: 实现状态机。该方式较为通用,适用于多种语言(取决于状态机支持的注释符号)。 正则匹配。该方式容易误判,尤其是容易误删字符串。 利用第三方库。该方式局限性较强,比如不同语言可能有

关于接口设计的一点想法

绘画的本地实现 假设我们正在创建一个程序。用JavaScrit画东西。 那么我们的代码可能是这样的: var canvas = document.createElement(canvas), canvas2D = canvas.getContext(2d); canvas.id = demo; canvas.style.cssText = position:fixed;top:0;left:0;z

Java程序员必须掌握的常用Linux命令

ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent)cd 切换目录touch 创建空文件vim / vi 创建/编辑文件 insert 编辑 :q 退出 :q! 强制退出 :wq 保

Java中Double保留后小数位的几种方法

最近做个小实验,其中一部分要求将表单提交的数据转换为double,这个功能其实很简单直接一句Double.parseDouble(request.getParameter("chinese").trim())就可以实现,但因为是统计成绩,所以需要保留小数点后两位,所以各种百度发现了很多解决方法,这里特

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值