开发环境准备

  • 下载 Eclipse IDE for C/C++
    地址:https://www.eclipse.org/downloads/packages/
  • 安装mingw64
    地址:http://www.mingw-w64.org/doku.php/download

    1)配置mingw64环境变量
    C_INCLUDE_PATH : mingw64安装目录\include
    LIBRARY_PATH :mingw64安装目录\lib

    2)系统变量的path变量中添加 mingw64安装目录\bin
    注意:以防万一,本文也将include和lib目录也加入了path变量中

    3)测试 cmd里执行如下命令
    gcc -v
    
    输出版本信息则安装成功

编译C/C++为dll

eclipse环境下

  • eclipse新建项目

  • 新建源代码文件
  • 编写方法
  • 右键项目 properties 配置
    1)Tool Chain Editor的配置

    2)settings的配置

    -Wl,--add-stdcall-alias -static-libgcc -static-libstdc++ -shared
    



  • 右键项目 build project 执行编译

    编译成功

    在eclipse的工作目录 test项目下的debug目录可以找到编译好的dll文件

visual studio 2015环境下

  • 新建win32项目

  • 新建头文件
    #pragma once
    #ifdef DLL_IMP
    #define DLL_API __declspec(dllexport) //导出函数
    #endif // DLL_API
    extern "C" {
      DLL_API char*   say();
    }
    
  • 新建源文件
    #define DLL_IMP
    #include "say.h"
    #include<stdio.h>
    char*  say(){
      printf("hello");
      return "ok";
    }
    
  • 设置属性 编译为dll

    Java调用dll

  • 下载JNA jna.jar 地址:https://mvnrepository.com/artifact/com.sun.jna/jna/3.0.9
  • 新建Java项目 引入jna.jar 并将dll拷贝到项目根路径下(否则需要填写dll的绝对路径)
  • 编写调用接口类
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface Clibrary extends Library{
    //使用eclipse环境下生成的dll
    Clibrary instance = (Clibrary) Native.loadLibrary("libtest", Clibrary.class);
    //dll中的方法 声明需一致
    void sayHello(); 

    //使用vs 2015生成的dll
    //Clibrary instance = (Clibrary) Native.loadLibrary("yolo-dll", Clibrary.class);
    //String say();
}
  • 编写Main类 调用方法执行
public class Main {
    public static void main(String[] args) {
        Clibrary.instance.sayHello();
    }
}

执行结果 如图

版权声明:原创,转载请注明来源,否则律师函警告



笔记      JNA

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!