zoukankan      html  css  js  c++  java
  • JNI工程搭建及编译

    JNI工程搭建及编译##

    1. 建立Java工程
      在具有C/C++比编译器的Eclipse中进行工程的创建,先创建一个简单的Java project,选项和一般同,这里仅仅需要将要调用的C/C++函数声明为native,注意C/C++中的数据类型Java中的转换.
    2. 生成Java工程的头文件
      将Java工程中的类文件和本地函数的声明定义好后,使用命令行,win+r,在Java工程中src文件夹下,即Java的包的第一层,使用javah命令:javah -jni java包名+类名编译得到一个.h类型的文件,其余的名字应该类似包名加类名,不过两者以_下划线隔开.
    3. 建立一个C/C++工程.
      注意左下的Project type中选择Sharded Library类型,将源码和头文件一一添加之后,将上面产生的.h文件考入到工程中,根据.h文件中的函数声明修改C/C++工程的实现.
      ![注意工程选择为Shared Library](http://7xjjqm.com1.z0.glb.clouddn.com/c++ shared library.jpg)
    4. jni.h头文件加入到C/C++工程中.
      对工程右键选中Properties选项,选择C/C++ Build选项卡中的GCC C Complier下的Include选项中中增加:{$JAVA_HOME}/include{$JAVA_HOME}/include/win32两个路径.
      将jni.h加入到工程的include目录中
    5. 编译生成dll文件
      在编译的时候注意,不是直接debug运行,先在工程中右键生成target再编译.将得到的dll放入到Java工程的根目录,根目录即同src文件夹所在的目录,自然是在path下,在Java中先使用静态代码块调用system.loadlibrary("libxxx"),然后就可以正常使用了.

    ERROR:

    1. 编译C/C++工程的时候报如下错误:
      使用标准std99
      在选项中的Miscellananeous加上-std=11即可
  • 相关阅读:
    【流水账】2021-06-19 Day-09
    【流水账】2021-06-18 Day-08
    【流水账】2021-06-16 Day-06
    【流水账】2021-06-15 Day-05
    .Net调用Java的实现方法
    优先队列的实例题
    栈的相关程序题
    重载函数
    卡特兰数
    关于全排列的递归
  • 原文地址:https://www.cnblogs.com/putuotingchan/p/8628693.html
Copyright © 2011-2022 走看看