问题标签 [jnaerator]
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 - 从 .dll 生成 Java 类
我有一个我想从 java 访问的设备。唯一的方法是使用制造商提供的 dll 库。我已经阅读了有关 JNI、JNA 等的信息,并且可能有一个外部工具可以分析 dll 并自动生成 Java 类。
有人知道这样做的方法吗?
java - 如何将 PointerByReference 地址传递给 JNA 中的结构
我会对以下来源有疑问,我对其进行了简化以使其更容易理解。
c代码
爪哇代码
我像这样访问java中的结构,
当我在 Visual Studio 中调试它时,我已经看到,对于 create_context 和 use_context 使用了不同的内存地址。当我设置 int test1 值时,它是正确的,但我想知道,为什么上下文的地址不同。有人有想法吗?这不会导致内存问题吗?或者任何想法我做错了什么?谢谢瓦伦蒂娜
memory - JNAerator BridJ 运行时静态方法实例内存
所以我最近更新了我的 JNAerator 并开始使用新的 BridJ 运行时,我正在尝试调试我遇到的一个问题,我不确定它是我的库的代码还是 JNAerator 本身。
基本上在我的 C 库中,我有一个init()
方法可以跨其他 C 库方法在内存共享变量中进行初始化。我注意到使用新的 BridJ 运行时和为我的库生成的 Java 代码仅创建静态方法的新注释。这是否会导致我的 C 库在对各种静态 Java 方法的不同调用中维护内存值时出现问题?
java - 从 Java 调用 Objective-C 代码的最简单方法是什么?
我需要从 Java 代码访问 Mac OSX 上的 Wifi 设备列表,经过研究,我发现我需要求助于“本机”代码 - 即 CoreWLAN 框架和 CWInterface.h 类(https:// developer.apple.com/library/mac/#documentation/CoreWLAN/Reference/CWInterface_reference/translated_content/CWInterface.html)
我最初以为我可以使用 JNA 调用此代码,但意识到我需要一些东西,因为 CoreWLAN 是 Objective-C(不是 C/C++)。
我已经尝试过这个 Objective-C Java 桥(https://github.com/shannah/Java-Objective-C-Bridge),但我不知道如何让它找到 CoreWLAN 框架。
所以我也尝试过使用 JNAerator ( https://code.google.com/p/jnaerator/wiki/ObjectiveC ) 所以我可以使用 BridJ ( https://code.google.com/p/bridj/ ),但我不能让它生成正确的 Java 代码。
- 仅使用此样式
java -Xmx1000m -jar jnaerator.jar -framework CoreWLAN -jar CoreWlan.jar
即可快速运行,但生成的 jar 仅包含 CoreWlan.h 的映射 - 如果我对 CWInterface.h 运行 jnaerator,那么 jnaerator 会失败。(我正在使用 jnaerator 的最新快照版本)
从 Java 调用 CWInterface.h 上的方法的最佳方法是什么?
java - 尽管将其添加到类路径中,但无法使用我的 JNAerator 构建的 jar
我在这里下载了最新的 JNAerator jar (jnaerator-0.12-SNAPSHOT-20130609 )。然后,从我的 Ubuntu 13.04 64 位,我用命令翻译了一个简单的 C 源代码(就在下面):
这样我得到一个 jar operations.jar
操作.c:
然后我将此 jar 添加到我的 Eclipse (Juno 4.1) 测试项目构建路径:这里是我的项目组织的屏幕截图
这是我项目的单一源文件:
但我得到以下错误输出:
(最后一句的意思是:无法打开共享对象文件:没有这种类型的文件或文件夹)。
我正在使用 sun Java7 JDK(64 位)。
有人知道我忘记了什么吗?
我确信一定有一个问题,比如我的 C 源文件丢失了,但是我尝试在几个位置将它添加到项目和 jar 中,但它并没有解决我的问题。
问候
java - JNA:void** 和 void* 之间的转换
我从头文件中生成了一个 JNA,这是两个感兴趣的函数。
以下是它在 JNA 中的转换方式。
我调用 FT_OpenEx 传递一个 PointerByReference,然后获取指针并将其传递给 FT_Close。代码执行,但我收到一个 FT_INVALID_HANDLE,它由 FT_Close 返回。
这是java代码
我的猜测是我传递给 FT_Close 的指针实际上并没有指向正确的地址。使用JNA在java中从void**传递到void*的正确方法是什么?
c++ - JNA - C++ 共享库
我有一个由各种头文件和 .cpp 文件组成的项目。有了这个,我用 Eclipse 构建了一个共享库,一切都很好。现在我想将 JNA 与这个 C++ 库一起使用。我知道除 JNA 之外的其他(可能更容易)选项,但必须使用它。我在网上搜索过,但老实说,直到现在我还没有找到一个非常简单的例子来理解我必须做什么并继续。我已经测试了一些示例,但它们仅包含一个标题和一个具有非常小的功能的 .cpp,并且对我一点帮助都没有。我还找到了一个名为 JNAerator 的工具,它应该可以简化程序(如果我至少理解得很好的话),但它的示例也是有限的。因此,如果有人可以向我解释我想要执行此操作的步骤,我将不胜感激(具有许多标头和 .cpp 的 C++ 共享库 --->
jna - 将 Foo 转换为 Foo.ByValue?
我正在使用 JNA 和 JNAerator 与一个老化的 lm_sensors 库集成,以便为我的盒子内的每个温度传感器创建 MBean。首先我调用这个方法:
.. 效果很好。随后我需要致电:
..我缺乏的是如何获取结果sensors_get_detected_chips
并将其按值传递给 . 的第一个参数sensors_get_feature
。
java - 使用 Bridj 和 JNAerator 在 Java 中使用指针地址
我在 C 中有这段代码,我想用 Java 编写相同的代码:
我使用 JNAerator 在 Java 中创建函数,它将使用 Bridj(Mylib 类)调用 C 函数 nfq_get_payload:
我的“等效”Java 代码是:
我应该提到使用 c 代码和 java 代码时的 ret 值是相同的,但是当我尝试访问数据时,在使用 Java 时会引发 NullPointerException(在 C 代码中,我会得到其他我不知道的东西)。当我这样做时,Pointer<Byte> data =Pointer.allocateBytes(4096);
我得到零而不是空指针异常,但由于我不在 C 代码中分配内存,我认为我不应该在 Java 代码中也这样做。
感谢您的时间和帮助干杯
java - 无符号类型的 BridJ 类型映射
使用 JNAerator 生成 BridJ 代码时,它将无符号类型(例如 windows' ULONG
)映射到普通 Java long
:
但是,Java 类型是有符号的,而不是无符号的。如果我需要手动更正,我需要使用哪些类型?像这样的字节数组?