麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

java使用JNA(Java Native Access)調用dll的方法

2019-11-26 15:54:46
字體:
來源:轉載
供稿:網友

JNA(Java Native Access):建立在JNI之上的Java開源框架,SUN主導開發,用來調用C、C++代碼,尤其是底層庫文件(windows中叫dll文件,linux下是so【shared object】文件)。
JNI是Java調用原生函數的唯一機制,JNA就是建立在JNI之上,JNA簡化了Java調用原生函數的過程。JNA提供了一個動態的C語言編寫的轉發器(實際上也是一個動態鏈接庫,在Linux-i386中文件名是:libjnidispatch.so)可以自動實現Java與C之間的數據類型映射。從性能上會比JNI技術調用動態鏈接庫要低。
1.簡單寫個windows下的dll,文件命名為forjava.dll,其中一個add函數,采用stdcall調用約定

復制代碼 代碼如下:

main.h文件
#ifndef __MAIN_H__
#define __MAIN_H__

#include <windows.h>

/*  To use this exported function of dll, include this header
 *  in your project.
 */

#ifdef BUILD_DLL
    #define DLL_EXPORT __declspec(dllexport) __stdcall
#else
    #define DLL_EXPORT __declspec(dllimport) __stdcall
#endif

#ifdef __cplusplus
extern "C"
{
#endif

int DLL_EXPORT add(int a,int b);

#ifdef __cplusplus
}
#endif

#endif // __MAIN_H__

main.cpp

#include "main.h"

// a sample exported function
int DLL_EXPORT add(int a ,int b)
{
    return a+b;
}

extern "C" DLL_EXPORT BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    switch (fdwReason)
    {
        case DLL_PROCESS_ATTACH:
            // attach to process
            // return FALSE to fail DLL load
            break;

        case DLL_PROCESS_DETACH:
            // detach from process
            break;

        case DLL_THREAD_ATTACH:
            // attach to thread
            break;

        case DLL_THREAD_DETACH:
            // detach from thread
            break;
    }
    return TRUE; // succesful
}
 


2.將jna.jar導入eclipse工程中,java代碼如下
復制代碼 代碼如下:

//import com.sun.jna.Library; cdecl call調用約定
import com.sun.jna.Native;
import com.sun.jna.Platform;
import com.sun.jna.win32.StdCallLibrary;

public class main {

    public interface CLibrary extends StdCallLibrary { //cdecl call調用約定時為Library
        CLibrary INSTANCE = (CLibrary)Native.loadLibrary("forjava",CLibrary.class);
        public int add(int a,int b);
    }

    public static void main(String[] args) {
        System.out.print(CLibrary.INSTANCE.add(2,3));
    }
}
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 美国黄色小视频 | 欧美日韩一 | 中文字幕视频在线播放 | 亚洲性生活免费视频 | 欧美色另类 | 欧美 国产 综合 | 日本成人在线播放 | 国产亚洲激情 | 欧美五月婷婷 | 麻豆一二区 | 久久亚洲精品久久国产一区二区 | 一区二区精品视频在线观看 | av性色全交蜜桃成熟时 | 国产成人在线一区二区 | 91午夜少妇三级全黄 | 成人短视频在线观看 | 亚洲国产精久久久久久久 | 亚州综合 | 亚洲91精品 | 欧美日韩在线视频一区 | 中国精品久久 | 91福利在线观看 | 久久96国产精品久久久 | 久久亚洲春色中文字幕久久 | 久久精品欧美一区二区 | 99精品国产在热久久婷婷 | 久久精品中文 | 久久9久久 | 久久手机在线视频 | 久久男人天堂 | 蝌蚪久久窝 | freexxxhd喷水 | 免费1级做55爰片l在线观看 | 免费a级作爱片免费观看欧洲 | 精品中文字幕在线播放 | 国产精品欧美日韩一区二区 | 色婷婷一区二区三区 | av在线试看 | 国产精品一区二区三区在线看 | 91成人免费在线观看 | 国产在线播放91 |