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

 public class TestNative{

     public native void test();

 }

二、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"因为引号是在本地查找头文件,

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

 /* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class TestNative */ #ifndef _Included_TestNative
#define _Included_TestNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: TestNative
* Method: test
* Signature: (LTestNative/JavaObject;)V
*/
JNIEXPORT void JNICALL Java_TestNative_test
(JNIEnv *, jobject); #ifdef __cplusplus
}
#endif
#endif

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

 // Dll_native.cpp: 定义 DLL 应用程序的导出函数。
// #include "stdafx.h"
#include "TestNative.h"
#include <iostream> JNIEXPORT void JNICALL Java_TestNative_test(JNIEnv *, jobject) { std::cout << "hello C++" << std::endl;
}

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

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

 public class TestNative{

     public native void test();

     public static void main(String[] args){

         System.loadLibrary("Dll_native");

         TestNative tn = new TestNative();
tn.test();
} }

java调用C++代码的更多相关文章

  1. windows和linux环境下java调用C++代码-JNI技术

    最近部门做安卓移动开发的需要调C++的代码,困难重重,最后任务交给了我,查找相关资料,没有一个教程能把不同环境(windows,linux)下怎么调用说明白的,自己在实现的过程中踩了几个坑,在这里总结 ...

  2. 通过JNI实现java调用C代码和C代码调用java的代码

    一.java调用C代码 1)java中需要声明调用的函数,也就是native方法,并通过System.LoadLibrary来调用dll或者so(C代码).实例代码如下: public class H ...

  3. java调用python代码

    同样的我们需要安装jython,具体的步骤如下: 1. 去 http://sourceforge.net/projects/jython/ 下载最新的jython相关的jar包. 2. 下载下来的ja ...

  4. JAVA调用matlab代码

    做实验一直用的matlab代码,需要嵌入到java项目中,matlab代码拼拼凑凑不是很了解,投机取巧采用java调用matlab的方式解决. 1.    matlab版本:matlabR2014a ...

  5. 01_JNI是什么,为什么使用,怎么用JNI,Cygwin环境变量配置,NDK案例(使用Java调用C代码),javah命令使用

    1 什么是JNI JNI Java本地开发接口 JNI是一个协议,这个协议用来沟通java代码和外部的本地代码(C/C++) 通过这个协议,java代码就可以调用外部的C/C++代码,外部的C/C++ ...

  6. 使用JNA,让java调用原生代码

    JNA定义: JNA:java Native Access,是SUN公司开发的基于JNI的框架.JNI使得Java可以调用原生的c或者c++代码. JNA与JNI(Java Native Interf ...

  7. JNI Java调用C代码 示例

    Activity public class MainActivity extends ListActivity {     static {         System.loadLibrary(&q ...

  8. java调用ruby代码

    问题: 最近在做一个应用的时候碰到了一个问题.客户端需要调用服务器端传回的脚本信息,然后执行.其中脚本类型包括ruby.而java中调用ruby的代码大致如下: String jrubyCode=&q ...

  9. 使用ecilpse(Java)调用Matlab代码

    1 安装java环境: http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载JDK最新版本并安装,CloudSim ...

随机推荐

  1. C# 4种方法计算斐波那契数列 Fibonacci

    F1: 迭代法 最慢,复杂度最高 F2: 直接法 F3: 矩阵法 参考<算法之道(The Way of Algorithm)>第38页-魔鬼序列:斐波那契序列 F4: 通项公式法 由于公式 ...

  2. SHOI2013 扇形面积并

    题目链接:戳我 补一张图 我们尝试把圆上的扇形转化成直线上的矩形--我们维护[1,2*m]的区间,那么每个能产生贡献的子区间的长度*第K大的半径的平方的总和就是answer了. 怎么转化呢?左端点为a ...

  3. 【QT】二进制读取图像文件并显示

    打开对话框选择文件 二进制方式读取文件 转换成图像显示 void MainWindow::showImage() { //打开文件对话框 QString lastPath="D:/Engli ...

  4. AcWing 143. 最大异或对

    https://www.acwing.com/problem/content/145 #include <iostream> #include <algorithm> usin ...

  5. J - Judge(快速幂)(同余定理)

    J - Judge   Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu Submit S ...

  6. video视频内容填充整个播放空间方法

    关于video视频内容填充整个播放空间方法一般上传的视频都没法占满video,看起来很不美观,解决办法很简单video{ object-fit:fill;}

  7. spring包下载方法

    http://blog.csdn.net/liangtiaoxian/article/details/52780747 https://jingyan.baidu.com/article/2fb0ba ...

  8. LCS - Longest Common Substring(spoj1811) (sam(后缀自动机)+LCS)

    A string is finite sequence of characters over a non-empty finite set \(\sum\). In this problem, \(\ ...

  9. Apache Flume入门指南[翻译自官方文档]

    声明: 根据官方文档选择性的翻译了下,不对请指正 https://flume.apache.org/FlumeUserGuide.html

  10. myeclipse控制台打印文字

    先来看看效果图: 下面是代码: import java.awt.Font; import java.awt.Shape; import java.awt.font.FontRenderContext; ...