zoukankan      html  css  js  c++  java
  • (转)Java 调用 C++ (Java 调用 dll)

    转自: http://www.cnblogs.com/baokang/p/4979243.html 

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

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

     

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

    复制代码
    /**
     * @author Baokang
     */
    public class JniDemo{
        public native static void set(int i);
        public native static int get();
    }
    复制代码

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

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

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

    创建Win32项目,项目名字JniDemo

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

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

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

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

    第七步 生成64位dll库

     先修改配置管理器

    然后生成64dll库

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

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

    复制代码
     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 }
    复制代码

    第九步 运行,搞定

  • 相关阅读:
    C/C++中浮点数输出格式问题
    C/C++中的输出对齐设置
    C++11 中的initialize_list
    c++中的构造函数初始化列表
    C++11中的array
    STL 中的链表排序
    poj1068 Parencodings
    poj 3295 Tautology
    How To Join XLA_AE_HEADERS and RCV_TRANSACTIONS(子分类账到事务处理追溯)
    销售订单的四个主要环节和每个环节用到的常用表
  • 原文地址:https://www.cnblogs.com/heluan/p/9883478.html
Copyright © 2011-2022 走看看