Java經過jna調用c++動態庫

1 環境準備java

操做系統:windows 10,x64c++

jna,jna-4.4.0.jarwindows

c++開發環境,vc2013eclipse

java開發環境,eclipse,jdk8函數

2 dll開發ui

經過vc2013建立動態庫(dll)工程項目JnaTestDll,編寫須要導出的函數定義及實現,以下:操作系統

JnaTestDll.hblog

#ifdef JNATESTDLL_EXPORTS接口

#define JNATESTDLL_API __declspec(dllexport)ip

#else

#define JNATESTDLL_API __declspec(dllimport)

#endif

 

extern "C" JNATESTDLL_API int Add(int a, int b);

extern "C" JNATESTDLL_API int Sub(int a, int b);

 

JnaTestDll.cpp

#include "stdafx.h"

#include "JnaTestDll.h"

 

 

// 這是導出函數的一個示例。

extern "C" JNATESTDLL_API int Add(int a, int b)

{

    return a + b;

}

 

extern "C" JNATESTDLL_API int Sub(int a, int b)

{

    return a - b;

}

配置環境選擇Release x64

 

編譯生成JnaTestDll.dll。

3 java調用dll

使用eclipse建立java應用工程項目,build path引入jna-4.4.0.jar。

將JnaTestDll.dll拷到java工程根目錄(和src同一目錄)。

編寫接口類JnaTestDll

package com.kld.jnatest;

 

import com.sun.jna.Library;

import com.sun.jna.Native;

 

public interface JnaTestDll  extends Library

{

      JnaTestDll INSTANCE = (JnaTestDll)Native.loadLibrary("JnaTestDll", JnaTestDll.class);

      public int Add(int a, int b);

      public int Sub(int a, int b);

}

main函數中調用

int add = JnaTestDll.INSTANCE.Add(2, 1);

int sub = JnaTestDll.INSTANCE.Sub(2, 1);

System.out.println("Add(2,1) = " + add);

System.out.println("Sub(2,1) = " + sub);

輸出結果以下所示:

 

相關文章
相關標籤/搜索