博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 访问 C++ 方法 JavaCPP
阅读量:6758 次
发布时间:2019-06-26

本文共 1432 字,大约阅读时间需要 4 分钟。

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

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

Maven:

 
  1. <dependency> 
  2.     <groupId>org.bytedeco</groupId> 
  3.     <artifactId>javacpp</artifactId> 
  4.     <version>0.11</version> 
  5. </dependency> 

使用方法:

C++:

 
  1. #include <string> 
  2.   
  3. namespace LegacyLibrary { 
  4.     class LegacyClass { 
  5.         public
  6.             const std::string& get_property() { return property; } 
  7.             void set_property(const std::string& property) { this->property = property; } 
  8.             std::string property; 
  9.     }; 

Java:

 
  1. import org.bytedeco.javacpp.*; 
  2. import org.bytedeco.javacpp.annotation.*; 
  3.   
  4. @Platform(include="LegacyLibrary.h"
  5. @Namespace("LegacyLibrary"
  6. public class LegacyLibrary { 
  7.     public static class LegacyClass extends Pointer { 
  8.         static { Loader.load(); } 
  9.         public LegacyClass() { allocate(); } 
  10.         private native void allocate(); 
  11.   
  12.         // to call the getter and setter functions  
  13.         public native @StdString String get_property(); public native void set_property(String property); 
  14.   
  15.         // to access the member variable directly 
  16.         public native @StdString String property();     public native void property(String property); 
  17.     } 
  18.   
  19.     public static void main(String[] args) { 
  20.         // Pointer objects allocated in Java get deallocated once they become unreachable, 
  21.         // but C++ destructors can still be called in a timely fashion with Pointer.deallocate() 
  22.         LegacyClass l = new LegacyClass(); 
  23.         l.set_property("Hello World!"); 
  24.         System.out.println(l.property()); 
  25.     } 

来源:51CTO

转载地址:http://dlzeo.baihongyu.com/

你可能感兴趣的文章
20180320作业1:源代码管理工具调查——15100216
查看>>
输出空心菱形
查看>>
StringBuilder类为何比string的简单拼接效率高
查看>>
仿百度搜索框自动下拉提示
查看>>
某封包地址分析
查看>>
渗透测试
查看>>
第七节
查看>>
获取和设置WebBrowser内核IE版本
查看>>
我的第一个博客,开始记录点滴生活
查看>>
用C#sqlserver实现增删改查
查看>>
使用DataX同步MaxCompute数据到TableStore(原OTS)优化指南
查看>>
绿色地址栏,未来安全的新趋势!
查看>>
给初学者的RxJava2.0教程(一)(转)
查看>>
进程概念
查看>>
netlink socket编程
查看>>
注册特殊广播接收者
查看>>
matplotlib正弦和余弦图
查看>>
DataTable的用法
查看>>
教育部老师远程培训课程听课点击器
查看>>
表操作汇总(复制,删除,修改,插入,查询及数据库的复制)
查看>>