Java 访问 C++ 方法 JavaCPP

Apache
Java C/C++
跨平台
2015-07-06
嘚儿个没

JavaCPP提供了在Java中高效访问本地C++的方法。采用JNI技术实现,支持所有Java实现包括Android系统,AvianRoboVM

JavaCPP提供了一系列的Annotation将Java代码映射到C++代码,并使用一个可执行的jar包将C++代码转化为可以从JVM内调用的动态链接库文件。

Maven:

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacpp</artifactId>
    <version>0.11</version>
</dependency>

使用方法:

C++:

#include <string>

namespace LegacyLibrary {
    class LegacyClass {
        public:
            const std::string& get_property() { return property; }
            void set_property(const std::string& property) { this->property = property; }
            std::string property;
    };
}

Java:

import org.bytedeco.javacpp.*;
import org.bytedeco.javacpp.annotation.*;

@Platform(include="LegacyLibrary.h")
@Namespace("LegacyLibrary")
public class LegacyLibrary {
    public static class LegacyClass extends Pointer {
        static { Loader.load(); }
        public LegacyClass() { allocate(); }
        private native void allocate();

        // to call the getter and setter functions 
        public native @StdString String get_property(); public native void set_property(String property);

        // to access the member variable directly
        public native @StdString String property();     public native void property(String property);
    }

    public static void main(String[] args) {
        // Pointer objects allocated in Java get deallocated once they become unreachable,
        // but C++ destructors can still be called in a timely fashion with Pointer.deallocate()
        LegacyClass l = new LegacyClass();
        l.set_property("Hello World!");
        System.out.println(l.property());
    }
}
加载中

评论(9)

1
1901
mark #JavaCPP#
蜀山下的鱼
蜀山下的鱼
有什么用? #JavaCPP#
哆啦比猫
哆啦比猫
能转模板元编程的C++么? #JavaCPP#
J
Jwxl
如果我会CPP要这东西有何用?如果我不会CPP要它又有何用?既然都本地方法了,何不直接上CPP #JavaCPP#
xiaolei123
xiaolei123
这个东西怎么用啊? #JavaCPP#
小鸽子咕噜
小鸽子咕噜
#JavaCPP#
xiaolei123
xiaolei123
感觉很好用 要是能再翻译多文档就好了。原版的看不懂。 #JavaCPP#
烟灰o_O
烟灰o_O
很传统的JNI调用有什么不同么? #JavaCPP#
Neoman
Neoman
很强大 #JavaCPP#

暂无资讯

暂无问答

JavaCV/javacpp opencv 结合freetype显示汉字

opencv 写中文到图片上 网上有很多都是本地安装的 然后配合freetype工作 javacv使用的是javacpp 不能用c/c++的直接解决方案, 翻看了opencv的各个modules 发现在opencv_contrib的modules下有...

2018/07/26 10:57
520
0
javaCV入门指南:序章

前言 从2016年开始写《javacv开发详解》系列,到而今的《javacv入门指南》,这中间虽然仅间隔两年,却改变了很多东西。 以前从不觉得java可以做流媒体、音视频编解码这些,直到现在,顶多说j...

2018/10/17 14:33
0
0
JavaCV

以Java为接口使用OpenCV和其他库

2017/02/22 20:49
462
0
Java(Native)

jni java call c/c++ implementation api c/c++ call java/jvm api jnative (便于利用已经存在的native库)) java call existing dll/so api jna(便于集成打包发布, best) java call existin...

2017/08/08 21:43
3
0
车牌识别

1:中文的开源车牌识别系统 80%以上的精度 https://gitee.com/easypr/EasyPR 1.1:车牌识别EasyPR--开发详解 https://blog.csdn.net/liuuze5/article/details/46290455 2:用开源软件 OpenAL...

2018/04/23 08:14
387
1
tensorflow 1.11.0 gpu windows10下编译 python37 cuda10

系统: win10 64bit vs2017 硬件: cpu:i7-6700hq 显卡:gtx970m 软件: python3.7(64bit) https://www.python.org/downloads/release/python-370/ 注意安装debugging symbols 和debug bin...

2018/10/06 09:35
2.5K
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部