当前位置:主页 > 通发老虎机官网 >

JNA实现Java调用C++动态链接库

发布时间:19-12-06 阅读:905

本日偶尔看到了JNA的先容,下载下来试了一下,很好用,相对照JNI要简单很多。做了一个可以callback的c++动态链接库,实现了java和c++的相互调用。

1、开拓情况:

开拓对象:Netbeans 6.8,包孕了Java和C++开拓插件,用一个对象对照方便,可以同时开拓C++的dll和Java代码。

C++情况:MingW 5.1.6+MSYS、g++ 3.4.5

Java情况:JDK 1.6.0_18

2、C++代码

用Netbeans创建一个动态链接库项目JNALib,创建一个c++源文件clib.cpp,天生结果为libJNALib.dll

#include

#include

using namespace std;

extern "C"

{

typedef void (*OpenFunc)(const char*,int);

OpenFunc openfunc = NULL;

void init(OpenFunc func) {

cout 3、Java代码

创建一个Java项目JNADemo,创建一个包clibtest,创建以下java代码:

package clibtest;

import com.sun.jna.Callback;

import com.sun.jna.Library;

public interface CLib extends Library{

public interface OpenFunc extends Callback {

void invoke(String filename, int i);

}

void init(OpenFunc openfunc);

void test();

}

package clibtest;

import com.sun.jna.Native;

public class hello {

public static void main(String[] args) {

// Loading dynamically the library

CLib lib = (CLib) Native.loadLibrary("libJNALib", CLib.class);

lib.init(new CLib.OpenFunc() {

public void invoke(String filename, int i) {

System.out.println("callback called.");

System.out.println(filename);

}

});

lib.test();

}

}

4、项目布局如下

5、编译C++项目,天生libJNALib.dll,拷贝到JNADemo主目录,目录布局如下:

6、运行法度榜样,结果如下:

转自:http://www.blogjava.net/bigbear/archive/2010/05/11/JNAExample.html



上一篇:印尼球迷来马被殴劫 赛沙迪:未接要求道歉正式
下一篇:Photoshop制作飘出音符的留声机动画(6)