问题标签 [djinni]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
286 浏览

ios - Djinni swift项目链接错误

我遵循这个指导方针,如果我用 Object-C 项目创建新项目,一切都会很好。但是,我想使用 Swift 项目,所以我更改了项目语言并创建了一个连接 Swift 和 Object-C 的桥梁。但它行不通。

如果我尝试调用此函数,则会发生错误

请帮我!

hello_world.hpp

HelloWorldImpl.hpp

PersonalApp-Bridging-Header.h

0 投票
1 回答
242 浏览

c++ - Djinni:如何处理想要重载的方法?

我最近在一个中型移动项目中使用了djinni 。
它确实是一个有用的工具,可以帮助我们简化和加快开发过程。

不止一次重载一个方法会很有帮助。
这在 djinni 中是不可能的(我猜这是由于目标平台之一的限制),我们最终得到了两种名称略有不同的方法。

这是使用 djinni 时建议的方法吗?
有更聪明的方法来做到这一点吗?

我发现使用不同名称的两种方法有点容易出错,但文档既没有提到(让我说)问题,也没有提出解决方法。

0 投票
0 回答
87 浏览

xcode7 - Djinni 犯错误

卡在这里为 djinni 制造问题,一切正常,我很高兴,但由于某种原因,我无法让 djinni 生成正确的文件。当我构建它失败并且我无法获得它丢失的 .o 对象时。以下是日志,请帮助将不胜感激。

./run_djinni.sh 已经是最新的:Djinni Parsing...Resolving...Generating...将生成的代码复制到最终目录...djinni 完成。deps/gyp/gyp amr.gyp -DOS=ios --depth=. -f xcode --generator-output=./build_ios -Icommon.gypi xcodebuild -project build_ios/amr.xcodeproj -configuration Release -target amr_objc | xcpretty -c ▸ 构建 amr/libamr_objc [发布] ▸ 检查依赖关系 ▸ 编译 amrApi.mm ▸ 编译 MerchantObjc.mm ▸ 编译 amr.mm ▸ 编译 amrItem.mm ▸ 编译 amrHttpResponse.mm ▸ 编译 amrItem+Private.mm ▸ 编译 NetworkObjc。 mm ▸ 正在编译 amrHttpResponse+Private.mm ** 构建失败 **

以下构建命令失败:CompileC build/amr.build/Release-iphoneos/libamr_objc.build/Objects-normal/armv7/MerchantObjc.o objc/MerchantObjc.mm normal armv7 objective-c++ com.apple.compilers.llvm.clang。 1_0.compiler(1次失败)

0 投票
1 回答
370 浏览

android - Djinni - Android 崩溃 - UnsatisfiedLinkError

非常卡在这里,由于某种原因,我的项目现在工作正常,每次我启动时都会崩溃。对此的任何帮助将不胜感激。

0 投票
1 回答
354 浏览

c++ - Dropbox Djinni 可以和 C++98 一起使用吗

我正在尝试评估 Djinni,以从我们的 C++ 代码生成 Java 和 Obj-C 包装器。
我们目前使用SWIG并正在评估其他用于生成包装器的工具。

由于我工作地点的一些限制,我们的 C++ 代码是 C++-98。
由于某些客户需求,我们无法迁移到 C++-11。

因此,我想知道我是否可以使用Djinni和 C++-98。
Djinni github自述文件指出:

接口是具有定义调用方法的对象(在 C++ 中,由 shared_ptr 传递)。Djinni 生成的代码允许用 C++ 实现的接口在 ObjC 或 Java 中透明地使用,反之亦然。

我在互联网上看到了几个使用 Djinni 的示例,他们似乎都使用shared_ptrs 和他们的接口。
使用 Djinni 是否必须使用 C++-11?

0 投票
1 回答
108 浏览

android - 支持 Djinni 中的 Java 继承吗?

Djinni (dropbox) 是否支持继承?遵循 描述和示例。我曾尝试使用继承,但它给出了语法错误。我不确定这是否都是必需的,或者我是否遗漏了一些东西。

家长班:

儿童班:

错误:应为“{”但找到“e”

删除扩展资源管理器后,我可以成功生成包装器。如果我遗漏了什么,请告诉我,因为我找不到任何详细的例子。

0 投票
1 回答
509 浏览

c++ - djinni - C++ 和 swift/objective C/java 之间的指针和循环引用

我有两个 djinni 接口,一个用 Swift/objective C/javaSwiftObj实现,一个用 C++ 实现CPPObj

它们都有一个指向对方的指针,因此SwiftObj将能够调用someCPPMethod()CPPObj反之亦然:CPPObj将能够从someSwiftMethod()调用SwiftObj

迅速:

  • 类变量:var myCPPObj: SwiftObj!
  • 创作:myCPPObj = MyCPPObj.create(self)
  • 用法:myCPPObj.someCPPMethod()

在 C++ 中:

  • 类变量:shared_ptr<SwiftObj> mySwiftObj_;
  • 用法:mySwiftObj_->someSwiftMethod();

所以这里的问题是,由于循环引用,这些对象没有被垃圾收集(我尝试并删除了循环引用,他们得到了 GCed)。

但后来我尝试将其中一个指针设置为弱。在 C++ 中:weak_ptr<SwiftObj> mySwiftObj_;......但这使得mySwiftObj_它立即被 GC,即使它实际上仍然存在于 swift 中。当我将 swift 指针设置为弱而 C++ 设置为强时,同样的事情发生了。

那么我该如何处理这种情况呢?(除了手动将这些指针之一设置为空)。关于指针如何在 djinni 中实际工作的任何见解?

谢谢!

0 投票
1 回答
392 浏览

java - 我必须使用哪些类和方法才能从 C++ 调用 Java?

我目前正在使用 Djinni,并且想从 C++ 调用 Java 方法。

我有以下接口描述文件:

它生成这些文件:

  • src/main/cpp/ExampleSO.hpp: C++ExampleSO类,包含一个虚析构函数和一个虚PerformAddition方法。
  • src/main/java/com/name/group/ExampleSO.javaExampleSO:包含方法的Java抽象类public abstract PerformAddition
  • src/main/jni/NativeExampleSO.hpp/ .cpp: JNI 绑定。

我想要做的是创建一个新的 Java 类,它将扩展ExampleSOJava 类(在接口描述中用 指定+j),并且能够从 c++ 文件调用这些方法。

我可以在 JNI 绑定中看到有一个 public using CppType = std::shared_ptr<::ExampleSO>;. 给定名称,我假设这将是通过 JNI 桥调用 Java 方法的方式,但是当我尝试执行以下操作时会导致段错误:

我是否必须以neso某种方式初始化此字段?

提前致谢。

编辑:这是NativeExampleSO.hpp(JNI桥)的内容,它可以使回答更容易:

0 投票
1 回答
181 浏览

java - 在 C++ 中具有自定义值和构造函数的 Java 类型枚举

enum我有这个需要与之交互的Java :

我想使用 Djinni 生成一个有效的 C++ <-> Java 接口,但由于djinni' 的枚举public enum在 Java(在我的情况下正确)和enum classC++(具有int基础类型)中生成,所以它不能工作。

这甚至可能吗?或者我是否必须interface使用手动制作的“绑定”创建一个具有 Java 和 C++ 实现的 Djinni?

提前感谢您的帮助。

0 投票
1 回答
175 浏览

android - Djinni 可以从 C++ 全局函数生成必要的代码吗?

我正在研究将libbitcoin用于我将要从事的项目,并且有兴趣使用 Djinni 分别为 iOS 和 Android 的 ObjC/Java 创建胶水代码。

似乎 libbitcoin 中有许多全局函数,在命名空间内,但不在类内。我只见过 Djinni 生成几种类型(类、枚举、标志、记录),但我无法找到是否可以容纳全局函数。

这是可行的吗?提前致谢。