快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

和记APP_机器人论坛



本日偶尔看到了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

#includ和记APPe

#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 dynamical和记APPly the library

CLib lib = (CLib) Native.lo和记APPadLibrary("libJNALib", CLib.class);

lib.init(new C和记APPLib.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/arch和记APPive/2010/05/11/JNAExample.html

您可能还会对下面的文章感兴趣: