问题标签 [bridj]
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.
java - 由于希伯来语用户名,无法使用 bridj 加载外部 dll
我试图通过 Windows 7 上的 BridJ 将本机库 ( lib.dll ) 加载到 Java 应用程序,其中用户名是用希伯来语编写的。
重要的是 Java 应用程序下载lib.dll并将其正确保存到位:
我参考了该文件-> 文件库,并传递lib.getCanonicalPath()
给 BridJ。
最后我得到以下异常:
所以看起来,getCanonicalPath()
将 דני 转换为。
我该如何解决?
java - JNAerator - 使用 typedef 生成的接口
我正在尝试使用 JNAerator 从 typedef 指令生成的接口,但我找不到这样做的方法:
.h 文件中的函数是:
头文件还包括原始的 typedef 指令:
JNAerator 生成:
方法:
界面:
和课程:
问题是,我不知道如何LPCWSTR
使用Pointer
和LPCWSTR
接口实例化一个对象,使用一个字符串,以便我可以将它传递给Initialize
方法。
我怎样才能做到这一点?
更新:
我修改了 .h 文件以使用wchar_t*
:
JNAerator 生成的方法如下:
所以我这样称呼它:
问题是我得到以下异常:
在这一行:
我究竟做错了什么?
java - 在 Android 中使用 BridJ 时出现 UsatisfiedLinkError
目前我正在为 Android 使用BRIDj-0.6.1-android.jar。问题是库显示不满意的链接错误,如下所示:
我将libcrypto.so文件保存在我的 Android 项目的lib/armeabi/路径中。
我该如何解决这个问题?
java - BridJ:无法获取方法的地址
BridJ 找不到共享库的方法。我需要帮助来理解为什么。
该库由 JNAerator 生成。
mn -g
lib.so 的:
图书馆的标题:
Java代码:
在日志中运行此应用程序时:
但是方法CreateClass
是成功找到的。
这是为什么?
memory - JNAerator BridJ 运行时静态方法实例内存
所以我最近更新了我的 JNAerator 并开始使用新的 BridJ 运行时,我正在尝试调试我遇到的一个问题,我不确定它是我的库的代码还是 JNAerator 本身。
基本上在我的 C 库中,我有一个init()
方法可以跨其他 C 库方法在内存共享变量中进行初始化。我注意到使用新的 BridJ 运行时和为我的库生成的 Java 代码仅创建静态方法的新注释。这是否会导致我的 C 库在对各种静态 Java 方法的不同调用中维护内存值时出现问题?
java - 来自 java 的 hunspell 和个人字典
我有两个选项可以从 java 中使用 hunspell:
- Hunspell JNA 或
- Hunspell BridJ
它们都工作正常,但我想使用 hunspell 的“个人字典”功能(从命令行调用 hunspell 时,-p 参数)。
有没有办法使用带有此参数的 Hunspell JNA 或 BridJ,或者具有相同的功能?
android - 是否建议将 Bridj 用于 OpenCV?
我一直在寻找包装我的 C++/OpenCV 代码并将其移至 Android 的方法。
到目前为止,JNI、JNA、JNAerator、SWIG 等我发现 Bridj 更容易理解和使用。Bridj 是我的 Android 版 OpenCV 源代码的良好绑定吗?我找不到很好的示例来解释有关为 Android 包装 OpenCV/C++ 的任何内容,此时我不确定是否应该使用 Bridj。
任何帮助深表感谢。
java - 无符号类型的 BridJ 类型映射
使用 JNAerator 生成 BridJ 代码时,它将无符号类型(例如 windows' ULONG
)映射到普通 Java long
:
但是,Java 类型是有符号的,而不是无符号的。如果我需要手动更正,我需要使用哪些类型?像这样的字节数组?
java - 从本机到 Java 的 BridJ 回调:本机中的值是否可能被覆盖?
我想为本地库(使用 BridJ)编写一个 Java 包装器。我要包装的方法需要一个操作结构(回调):
这些操作显然应该用 Java 编写,因此method
回调 Java 空间(使用 BridJ 的回调机制)。
但是,在执行 Java 回调并返回后method
,C 代码中的局部变量发生了变化:
我怎样才能防止这种情况发生?
//详见https://github.com/Maxhy/dokany/issues/7
//有趣的编辑:无用指针的偏移量似乎是恒定的,在我的应用程序中,第二条调试消息始终是“192”而不是“0”
java - 在 Java 中并使用 Bridj,如何动态调用任何本机函数?
Clojure 的用户通常希望尽可能地懒惰,并延迟类和对象的创建。本着同样的精神,如果我希望调用在运行时从 Java 中解析的本机函数,我可以使用com.sun.jna.Function.getFunction("foolibrary", "foofuncname")
,它返回一个com.sun.jna.Function
,它可以是invoked
。
在 Clojure 中,这看起来像:
另一方面,BridJ 提供了有吸引力的性能优势并声称 API 更简单,但是,我仍然不清楚如何使用 BridJ 来执行类似于运行时绑定 JNA 示例的操作。有人可以演示如何吗?此外,如果这是可能的,这种方法是否有任何性能损失?否则,似乎提前生成 Java 源文件是唯一的解决方案。如果有人能证实这一点,我将不胜感激。