zoukankan      html  css  js  c++  java
  • java调用C++代码

    一、在要使用到C++代码的类文件中声明一个native方法,例如:

    1 public class TestNative{
    2 
    3     public native void test();
    4 
    5 
    6 }

    二、javac编译此java文件,然后使用javah TestNative命令生成一个头文件

    三、使用visual studio工具新建dll项目

    然后将jdk目录下的inlcude文件夹下的jni.h和jawt.h以及include/win32文件夹下的jin_md.h和jawt_md.h文件添加在上面的dll项目中,然后将我们之前生成的TestNative.h文件中的#include<jni.h>改为#inlcude"jni.h"因为引号是在本地查找头文件,

    而<>实在标准库函数中查找。

     1 /* DO NOT EDIT THIS FILE - it is machine generated */
     2 #include "jni.h"
     3 /* Header for class TestNative */
     4 
     5 #ifndef _Included_TestNative
     6 #define _Included_TestNative
     7 #ifdef __cplusplus
     8 extern "C" {
     9 #endif
    10 /*
    11  * Class:     TestNative
    12  * Method:    test
    13  * Signature: (LTestNative/JavaObject;)V
    14  */
    15 JNIEXPORT void JNICALL Java_TestNative_test
    16   (JNIEnv *, jobject);
    17 
    18 #ifdef __cplusplus
    19 }
    20 #endif
    21 #endif

    然后我们在C++中实现这个函数即可,例如:

     1 // Dll_native.cpp: 定义 DLL 应用程序的导出函数。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include "TestNative.h"
     6 #include <iostream>
     7 
     8 
     9 JNIEXPORT void JNICALL Java_TestNative_test(JNIEnv *, jobject) {
    10     
    11     std::cout << "hello C++" << std::endl;
    12 }

    最后编译项目生成一个dll文件;

    四、最后将生成好的dll文件放到java项目中,使用代码调用:

     1 public class TestNative{
     2 
     3     public native void test();
     4 
     5     public static void main(String[] args){
     6 
     7         System.loadLibrary("Dll_native");
     8 
     9         TestNative tn = new TestNative();
    10         tn.test();
    11     }
    12 
    13 
    14 }
  • 相关阅读:
    windows7 dos修改mysql root密码
    Windows7 安装完成mysql dos启动服务出现服务名称无效
    windows 环境下.Net使用Redis缓存
    SQLSERVER 使用 ROLLUP 汇总数据,实现分组统计,合计,小计
    Web Form 和asp.net mvc 差别
    SQL Server如何编辑超过前200行的数据
    附加数据库失败,操作系统错误 5:"5(拒绝访问。)"的解决办法
    MVC 架构
    关于打印代码
    关于WCF一些基础。
  • 原文地址:https://www.cnblogs.com/CLAYJJ/p/7725975.html
Copyright © 2011-2022 走看看