JavaCPP提供了在Java中高效访问本地C++的方法。采用JNI技术实现,支持所有Java实现包括Android系统,Avian 和 RoboVM。
JavaCPP提供了一系列的Annotation将Java代码映射到C++代码,并使用一个可执行的jar包将C++代码转化为可以从JVM内调用的动态链接库文件。
Maven:
org.bytedeco javacpp 0.11
使用方法:
C++:
- #include
- 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());
- }
- }
网站标题:Java访问C++方法JavaCPP
网页URL:http://www.shufengxianlan.com/qtweb/news41/478741.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联