zoukankan      html  css  js  c++  java
  • java 调用c++程序实例

    1.java程序:

    package com.zhangshitong;
    
    import java.io.File;
    
    public class Java2cpp {
    
        static{
             System.load("F:" + File.separator + "JavaCallcpp.dll");
        }
        
        public native int DLL_ADD(int a, int b); //add method
        
        public static void main(String[] args) {
            int sum =0;
            Java2cpp test = new Java2cpp();
            sum = test.DLL_ADD(45, 2);
            System.out.println("the result is: "+ sum);
        }
    }

    2. 找到java程序的.class文件,笔者用的是eclipse,所以找到项目的bin目录 cmd下使用  javah -classpath . -jni com.zhangshitong.Java2cpp

    或生成com_zhangshitong_Java2cpp.h文件

    3.以下步骤就是生成dll文件了,笔者用的visual studio 2008 

    需要注意的是需要安装64位的编译器,操作步骤详见:https://jingyan.baidu.com/article/a501d80c1aa5a4ec630f5eb6.html

    导入相关.h头文件:  1)com_zhangshitong_Java2cpp.h;  2)jni.h和jni_md.h问jdk中的头文件,在JDK_HOMEinclude 和DK_HOMEincludewin32中  拷贝到工程的头文件夹中,拷贝完之后,还需要引入

    4.  com_zhangshitong_Java2cpp.h文件 中的改为本地引用  com_zhangshitong_Java2cpp.h文件

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include "jni.h"
    /* Header for class com_zhangshitong_Java2cpp */
    
    #ifndef _Included_com_zhangshitong_Java2cpp
    #define _Included_com_zhangshitong_Java2cpp
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     com_zhangshitong_Java2cpp
     * Method:    DLL_ADD
     * Signature: (II)I
     */
    JNIEXPORT jint JNICALL Java_com_zhangshitong_Java2cpp_DLL_1ADD
      (JNIEnv *, jobject, jint, jint);
    
    #ifdef __cplusplus
    }
    #endif
    #endif

    相应的cpp文件:

    // JavaCallcpp.cpp : 定义 DLL 应用程序的导出函数。
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include "com_zhangshitong_Java2cpp.h"
    using namespace std;
    JNIEXPORT jint JNICALL Java_com_zhangshitong_Java2cpp_DLL_1ADD(JNIEnv *, jobject, jint a ,jint b)
    {
        return a+b;
    }

    5.生成dll文件时 需用release模式,笔者再用debug模式的时候报错

    6.生成dll,然后把生成的dll拷贝到指定的目录,java程序在该位置调用即可

    相应的c++项目的目录结构是:

     红色框中的都是vs2008自动生成的

  • 相关阅读:
    python random 随机选择操作
    分类预测,交叉验证调超参数
    7种炫酷HTML5 SVG液态水滴融合分解动画特效
    SAP WEBSERVICE Soap中RPC-style和Document-style
    Cocos2d-x 3.0final 终结者系列教程02-开发环境的搭建
    C#创建Excel文件并将数据导出到Excel文件
    某一天,忽然发现自己坚持不下去了。(无关计算机,仅仅是一些自己的困惑和感想)
    HDU4300-Clairewd’s message-KMP
    Java深入
    IOS UITextView光标位置在中间的问题
  • 原文地址:https://www.cnblogs.com/zhangshitong/p/9030156.html
Copyright © 2011-2022 走看看