美文网首页
Java 调用 C++

Java 调用 C++

作者: modingfa | 来源:发表于2019-07-22 21:08 被阅读0次

    摘要: 本文原创,转载请注明地址 http://www.cnblogs.com/baokang/p/4979243.html

    因为要做点图形处理的项目,需要在Java中调用dll库,所以开发的第一步是研究了一下Java Jni的使用方法。突然发现Android Jni 使用跟这个好像(麻蛋,不就是一样的吗,但是Android中需要使用so动态链接库)。

    第一步 创建Java工程,命名JniDemo,添加JniDemo.java

    image

    第二步 在Java类中添加native方法

    [ 复制代码

    ](javascript:void(0); "复制代码")

    <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">/** * @author Baokang */
    public class JniDemo{ public native static void set(int i); public native static int get();
    }</pre>

    [ 复制代码

    ](javascript:void(0); "复制代码")

    第三步 使用javah命令生成头文件

    在cmd中执行javah javah com.bk.jnidemo.JniDemo,生成 com_bk_jnidemo_JniDemo.h 头文件

    image

    第四步 创建DLL项目,使用Vs2010

    创建Win32项目,项目名字JniDemo

    image image image

    第五步 拷贝com_bk_jnidemo_JniDemo.h,jni.h,jni_md.h至vs工程cpp文件目录下

    其中jni.h在jdk的include目录下,jni_md.h在jdk的include\win32目录下

    image

    在项目中添加头文件目录下com_bk_jnidemo_JniDemo.h,#include <jni.h> 改为 #include "jni.h"

    第六步 在Jni.cpp中实现C++方法

    image

    第七步 生成64位dll库

    先修改配置管理器

    image image image image

    然后生成64dll库

    image

    第八步 把64位dll库拷贝至Java JniDemo项目根目录下,修改JniDemo.java

    注意64位dll在X64目录下,然后修改JniDemo.java如下

    [ 复制代码

    ](javascript:void(0); "复制代码")

    <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> 1 package com.bk.jnidemo; 2
    3 public class JniDemo { 4 static{
    5 System.loadLibrary("JniDemo");
    6 }
    7 public native static void set(int i); 8 public native static int get(); 9
    10 public static void main(String[] args) { 11 set(100); 12 System.out.println(get()); 13
    14 } 15 }</pre>

    [ 复制代码

    ](javascript:void(0); "复制代码")

    第九步 运行,搞定

    image image

    相关文章

      网友评论

          本文标题:Java 调用 C++

          本文链接:https://www.haomeiwen.com/subject/vgyglctx.html