Djinni的使用

djinni:生成跨语言类型声明和接口绑定的工具 金尼 Djinni是用于生成跨语言类型声明和接口绑定的工具。 它旨在将C ++与Java或Objective-C连接起来。 在python分支上的实验版本中提供了对Python的支持。 Djinni可用于跨平台C ++库代码与Android和iOS上特定于平台的Java和Objective-C的接口。 我们在2014年CppCon大会上宣布了Djinni。您可以查看和。 有关Djinni以及其他人如何使用它的更多信息,请查看本文档末尾的社区链接。 维护说明:此存储库是稳定的,但不再由Dropbox维护。 如果您有任何疑问或想与Djinni的其他用户交谈,可以通过本文档末尾的链接加入Slack社区。 主要特点 从单个接口描述文件生成并行的C ++,Java和Objective-C类型定义。 支持三种核心语言的原始类型和用户定义的枚举,记录和接口的交集。 生成接口代码,该接口代码允许在 立即下载

Djinni

使用操作系统

Windows

操作步骤

1、新建一个项目
2、git init
3、git submodule add https://github.com/dropbox/djinni.git deps/djinni
4、在项目最外层新建一个文件helloworld.djinni:
    hello_world = interface +c {
      static create(): hello_world;
      get_hello_world(): string;
    }
5、新建一个文件run_djinni.sh:
    #! /usr/bin/env bash

    ### Configuration

    # Djinni IDL file location
    djinni_file="helloworld.djinni"

    # C++ namespace for generated src
    namespace="helloworld"

    # Objective-C class name prefix for generated src
    objc_prefix="HW"

    # Java package name for generated src
    java_package="com.mycompany.helloworld"


    ### Script

    # get base directory
    base_dir=$(cd "`dirname "0"`" && pwd)

    # get java directory from package name
    java_dir=$(echo $java_package | tr . /)

    # output directories for generated src
    cpp_out="$base_dir/generated-src/cpp"
    objc_out="$base_dir/generated-src/objc"
    jni_out="$base_dir/generated-src/jni"
    java_out="$base_dir/generated-src/java/$java_dir"

    # clean generated src dirs
    rm -rf $cpp_out
    rm -rf $jni_out
    rm -rf $objc_out
    rm -rf $java_out

    # execute the djinni command
    deps/djinni/src/run \
       --java-out $java_out \
       --java-package $java_package \
       --ident-java-field mFooBar \
       --cpp-out $cpp_out \
       --cpp-namespace $namespace \
       --jni-out $jni_out \
       --ident-jni-class NativeFooBar \
       --ident-jni-file NativeFooBar \
       --objc-out $objc_out \
       --objc-type-prefix $objc_prefix \
       --objcpp-out $objc_out \
       --idl $djinni_file
6、运行脚本:
    sh ./run_djinni.sh

参考网站

http://mobilecpptutorials.com/hello-world-app-part-1.html
djinni:djinni中文文档,一个根据djinni写成的demo(ios),解决了macOS Sierra 10.12环境下无法build的问题 djinni 一个根据djinni写成的demo(ios),解决了macOS Sierra下第一次build时出错的问题 djinni介绍 Djinni 是一个用来生成跨语言的类型声明和接口绑定的工具,主要用于 C++ 和 Java 以及 Objective-C 间的互通。 好处: 用了接口描述文件。声明清晰、修改简易,并保证了跨平台接口的一致性。 自动生成接口绑定代码。免去了绑定 C++ 和 Java (JNI) 及 Objective-C (Objective-C++) 的麻烦。 1 配置djinni 1.1 下载djinni https://github.com/dropbox/djinni.git 将下载好的djinni放在[example_root]/deps/ 下 此时目录结构为: 1.2 编译djinni $ cd [djinni_root]/ $ src/build 第一次 立即下载

相关推荐

Play2:使用 djinni 和 gyp 的 iOS 和 Android 应用入门模板

玩 2 Play2 是用于创建共享通用非 UI 核心的 iOS 和 Android 应用程序的模板。 将您的新 iOS 和 Android 应用程序基于 Play2 基础架构,以最大限度地重用代码并节省开发时间。 如果您同时在两个平台上开发应用程序,您将获得最大的收益。 大约 50% 的应用程序功能(概念上)可以重复使用,但您的里程可能会有所不同。 技术 该项目基于多种开源技术,这些技术共同创造了巨大的价值。 来自 Dropbox 的 来自谷歌的 来自 Google 的 学分 Play2是一个胭脂叉由史蒂芬Kabbes。 文件夹和 makefile 结构几乎没有变化,但实际入门应用程序的依赖项和代码已显着不同。 工具链 带有最新 Xcode 入门应用 捆绑的入门 iOS 和 Android 应用程序是“拉动刷新”类型,可在 UITableView 和 ListView 中显示结

探索 Djinni:一款跨平台接口定义语言和生成工具

是由 Dropbox 开源的一个轻量级工具,它允许开发者在 C++、Java 和 Objective-C/Swift 之间定义共享的接口和类型,并自动生成相应的绑定代码,极大地简化了多语言间的交互工作。这篇文将带你了解 Djinni 的核心功能、技术原理以及如何利用它来提升开发效率。 ## 项目简介 Djinni 主要解决了什么问题呢?在跨平台开发中,尤其是在 Android、iOS 和服务器...

gitblog_00054的博客 1087

djinni-generator:命令行工具,可从djinni-IDL文件生成粘合代码

Djinni发电机 :right_arrow:文档: Djinni是用于生成跨语言类型声明和接口绑定的工具。它旨在将C ++与Java或Objective-C连接起来。 Djinni生成器解析接口定义文件并生成: 类型(枚举,记录)的C ++实现 类型的Java实现 类型的Objective-C实现 通过JNI在C ++和Java之间转换的C ++代码 在C ++和Objective-C之间转换的Objective-C ++代码。 安装 Djinni要求Java能够执行! Linux,macOS 手动下载并安装 下载,使其可执行,然后将包含的文件夹放在PATH中: curl -LO https://github.com/cross-language-cpp/djinni-generator/releases/latest/download/djinni chmod u+x djinni export

Djinni 开源项目使用教程

Djinni 项目的目录结构如下: ``` djinni/ ├── CMakeLists.txt ├── CONTRIBUTING.md ├── LICENSE.txt ├── README.md ├── bin/ ├── contrib/ ├── example/ ├── lib/ ├── test-suite/ └── tools/ ``` - `CMakeLists.txt`: CMak...

gitblog_00542的博客 411

虚拟机Ubuntu连接USRP

笔记本通过网线连接USRP。

xiaozir的博客 2307

TSMC65nm工艺下Virtuoso仿真gm-id曲线的保姆级教程(含ADE设置详解)

本文提供了一份在TSMC 65nm工艺下使用Cadence Virtuoso绘制gm-id曲线的详细教程。内容涵盖从理解gm/id方法学、搭建仿真环境、深度解析ADE设置,到运行DC仿真、提取数据并生成对数坐标曲线的完整流程。教程重点解析了Virtuoso ADE中的关键设置与常见避坑点,旨在帮助模拟集成电路设计初学者快速掌握这一核心设计工具,为高性能电路设计奠定基础。

grpc6streamer的博客 1173

djinni使用实践(一) -- 官方文档

djinni项目地址 Djinni Djinni 是一个生成跨语言类型声明和接口绑定的工具。 它旨在将 C++ 与 Java 或 Objective-C 连接起来。 Python 支持在 python 分支上的实验版本中可用。 Djinni 可用于在 Android 和 iOS 上将跨平台 C++ 库代码与特定于平台的 Java 和 Objective-C 接口。 我们在 CppCon 2014 上发布了 Djinni。你可以看到幻灯片和视频。 有关 Djinni 以及其他人如何使用它的更多信息,请查

qq_27246079的博客 2915

传感器融合的智能演进:ST-MC-Workbench中霍尔与编码器的协同控制策略

本文探讨了ST-MC-Workbench中霍尔传感器与编码器的协同控制策略,通过传感器融合技术提升电机控制精度。文章详细介绍了分层处理架构、霍尔安装角度优化及编码器Z脉冲容错机制,展示了在新能源汽车和工业应用中的实际效果,为高精度位置检测提供了解决方案。

weixin_29159441的博客 482

Website-downloader:一个网址换整站离线镜像,5 分钟上手指南

Website-downloader 是一个跑在本地的 Node.js 小服务:输入一个网址,它把整站的页面、图片、样式表、脚本统统抓下来,最后压成一个 zip 压缩包。你拿到的交付物只有一样——一份能断网打开的整站下载文件,也就是完整的网站离线备份。 [![Website-downloader 整站下载演示:输入网址后实时抓取日志与 zip 包生成](https://raw.gitcode.c

gitblog_00663的博客 794

计算机考研常见面试题

写在前面 本人参加20考研,由于复试没有具体要求会问哪几门课,所以我就找了网上一些常见的计算机专业的面试题,整理如下 主要结构: 数据库 软件工程 操作系统 计算机组成原理 计算机网络 数据结构 C++ Java 数据库 1、数据:数据库中存储的基本对象。 数据库:长期存储在计算机内的、有组织的、可共享的数据集合。 数据库管理系统:专门用于建立和管理数据库的一套软件。对外部程序提供访问数据库的方法,对内进行数据管理。 数据库系统:与和数据库相关的整个系统,一般由数据库、数据库管理系统、应用程序、数

qq_38841618的博客 2万+

AutoSAR实战:手把手教你配置PNC(Partial Network Cluster)实现精准休眠与唤醒

本文详细介绍了如何在AutoSAR中配置PNC(Partial Network Cluster)实现精准休眠与唤醒,通过DaVinci Configurator工具逐步指导,结合ComM模块的协同调试,优化车载电子系统的能耗管理。文章包含实战步骤、常见错误排查及功耗优化数据,适合汽车电子开发工程师参考。

weixin_33725239的博客 466

djinni使用实践(三)--Android项目中的使用

djinni使用实践(一) -- 官方文档 djinni使用实践(二) -- djinni究竟都有哪些配置选项 本篇是介绍djinni在Android项目中JNI开发的使用场景,所以默认大家有一定的Android JNI开发经验,此篇中涉及到的JNI相关的知识点不做介绍,大家可自行学习。 djinni工具集成过程中需要用到该项目中的一些文件,我们先下载到本地以备使用 djinni项目地址 接下来先看下工程结构: 着重看下djinni相关的文件夹: api_ge...

qq_27246079的博客 1760

python 写一个简单的 telegram bot (电报机器人)

replit.com 环境配置太恶心了,只能使用 poetry.poetry 这个名字是挺好听,用起来也是很垃圾,太恶心。heroku.com 注册登录不方便,需要各种验证。所以,部署的问题,目前搁置。

waterHBO的博客 3197

djinni使用实践(二) -- djinni究竟都有哪些配置选项

djinni使用实践(一) -- 官方文档 上一篇是官方文档的中文译文方便大家查阅,这一篇整理下djinni究竟都有哪些配置选项,大家也可以在djinni项目根目录下运行命令查看。 src/run --help Already up to date: Djinni Usage: djinni [options] --help --idl test.djinni 此命令后接我们自己写的idl文件,后缀名为“.djinni”,如:test.djinni,需要

qq_27246079的博客 638

2024年数字IC秋招-速腾聚创-数字芯片验证工程师-笔试题

笔试题型:单选 + 问答题笔试平台:牛客(手机+电脑监控)笔试时间:1hA. len取10的概率是1/2;B. len取10的概率是1/3;C. len取10的概率是1/4;D. len取10的概率是1;

qq_42135020的博客 1399

Eclipse邂逅Deepseek:本地化部署全攻略

通过前面一系列的步骤,我们成功地在 Eclipse 中完成了 Deepseek 的本地化部署,并且对部署后的功能进行了测试和优化,还解决了可能遇到的一些常见问题。这一过程不仅让我们体验到了将强大的大语言模型与高效的开发环境相结合的魅力,也为我们在软件开发过程中带来了诸多便利。本地化部署 Deepseek 到 Eclipse,使得我们在代码编写过程中能够获得智能的代码补全和精准的问答支持,大大提高了开发效率。同时,本地化部署保障了数据的安全性和隐私性,避免了数据在传输过程中可能面临的风险。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4517

Djinni_初试Android

Djinni——Android初步使用 对于Djinni的介绍和使用这篇文章就不在赘述了,如果还不太了解的可以参考上一篇博客:博客链接、 该篇主要是将代码导入Android Studio中,该篇文章也是参考官方的demo。 因为也是刚开始接触这个Djinni这个工具,希望这篇博客可以对你有帮助,至于文章中有很多不对不足的地方会在后面的学习中不断去修改。 1——创建项目HelloWorl...

SkinWhite的博客 1500

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

生成跨语言的类型声明和接口绑定的工具(Djinni )

Djinni 是一个用来生成跨语言的类型声明和接口绑定的工具,主要用于 C++ 和 Java 以及 Objective-C 间的互通。 示例接口定义文件: 1 # Multi-line comments can be added here. This comment will be propagated 2 # to each generated definition. 3 my...

weixin_33835103的博客 238

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Djinni:跨语言桥接代码生成器

Djinni:跨语言桥接代码生成器 项目介绍 Djinni 是一个由 Dropbox 最初创建的项目,旨在生成 C++ 与其他编程语言之间的桥接代码。尽管 Dropbox 已经停止维护其在 GitHub 上的开源 Djinni 仓库,但 Snapchat 在此基础上开发了内部分支,并最终接手了 Djinni 的维护工作。Djinni 的核心功能是帮助开发者轻松地在不同编程语言之间进行数据和功能的桥...

gitblog_00048的博客 379

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

c 调用java程序,从C ++调用Java必须使用什么类和方法?

I'm currently working with Djinni and would like to call Java methods from C++.I have the following interface description file:ExampleSO = interface +j {PerformAddition(a: i32, b: i32): i32;}It genera...

weixin_33754744的博客 191

深入解析 alt-tab-macos 设置搜索:SettingsSectionSearchContent 的 base/dynamic 双段式可搜索内容设计

本指南以 [SettingsSectionSearchContentSpecs.md](https://link.gitcode.com/i/b6d7b3be67baacfa124d431409b3a376) 为核心骨架,结合 alt-tab-macos 仓库中 [SettingsSectionSearchContent.swift](https://link.gitcode.com/i/6bf6

gitblog_00020的博客 858

DJINNI 开源项目指南

DJINNI 开源项目指南 项目介绍 DJINNI 是一个旨在连接技术人才与寻求招聘的平台,特别强调远程工作和直聘模式,从而避免中介成本。它适用于两个主要群体:企业寻找技术人才以及技术人员寻找职业机会。对于开发者,它提供了一个可以匿名求职、查看预先公布的薪资期望,并直接与潜在雇主沟通的环境。而对于招聘方,DJINNI允许以更低的成本接触到位于IT税较低地区的顶级人才,支持高效、直接的招聘过程。 项...

gitblog_00325的博客 828

跨平台接口实现方案djinni

该工程的位置在:https://github.com/dropbox/djinni 现在分析djinni接口的优点和缺点: 优点:可以编写一份idl 文件生成所有平台的接口。 缺点:性能不高,数据使用std::vector<int8_t> 拷贝导致性能有很大损失。 具体demo可以参考: @import "media.djinni" //引入其它idl 文件 @import "comm.djinni" sdk_vendor = enum { //定义枚举类型 ...

weixin_43929943的博客 537

djinni中是如何把buffer转为string的

在 Djinni 中,可以使用 std::string 的构造函数来把 std::vector<uint8_t> 转换为 std::string。例如: std::vector<uint8_t> buffer = …; std::string str(buffer.begin(), buffer.end()); 注意,这种方法只适用于转换包含 ASCII 字符的 buff...

weixin_35754676的博客 270

Djinni:跨语言接口绑定工具

Djinni 是一个开源工具,用于在 Objective-C、Java 和 C++ 之间自动生成互操作的类型定义和接口实现。它允许你在多种编程语言中定义共享的接口和数据结构,从而简化了跨平台的应用开发。Djinni 的核心是它的 Interface Description Language(IDL),通过这个语言,你可以声明枚举、标志、记录和接口,然后 Djinni 将这些声明转换成相应的 C++...

gitblog_00977的博客 455

CppCon 2015 学习:Bridging Languages Cross-Platform

Djinni 是一个用于 跨平台 C++ 与移动平台(如 Android 和 iOS)之间接口绑定 的工具。它允许你定义一个跨平台的接口(通常是用一种类似 IDL 的语法),然后自动生成:假设你在开发一个移动应用(Android & iOS),并且你想将核心逻辑(比如业务模型、算法、数据处理)写在 跨平台的 C++ 层,而 UI 层则使用平台原生的技术(iOS 用 Swift/Obj-C,Android 用 Java/Kotlin)。 你可以用 Djinni 来: 然后 Djinni 会为你自动生成:

虾球 1087
上一篇: 在Idea中JNI的使用
下一篇: Docker常用命令
tomyangs
博客等级 码龄9年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值