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(); } }
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
hello.c
#include "hello.h" #include <stdio.h> DLLIMPORT void HelloWorld() { printf("Hello, World! \n"); }
运行结果如下: