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

运行结果如下:

 

posted @ 2021-02-18 12:24  panda4671  阅读(1548)  评论(0编辑  收藏  举报