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

今天偶然看到了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 <stdlib.h>
#include 
<iostream>
using namespace std;
extern "C"

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

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

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

    OpenFunc openfunc 
= NULL;

    
void init(OpenFunc func) {
        cout 
<< "init called" <<endl;
        openfunc 
= func;
    }


    
void test() {
        
if (openfunc == NULL) {
            cout 
<< "openfunc is NULL" << endl;
        }

        (
*openfunc)("test"0);
    }

}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpzgd.html