问题标签 [jniwrapper]

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 回答
123 浏览

java - 如何转换 C++ 数组到 JNIWrapper 中的 jfloatArray?

我想将我的 C++数组输出映射到jniFloatArray

尝试遵循此解决方案:

"使用 JNI 将 float* 转换为 jfloatArray "

但我无法将 float* 指向数组对象。

假设我在 C++ 数组输出对象中的输出是:

输出 = {1.0f ,2.0f ,3.0f};

我真正想要的是将此输出(数组)转换或映射到JniWrapper中的 jfloatArray。

0 投票
2 回答
230 浏览

java - 如何映射 Java ArrayList到 C++ 向量> 在 JniWrapper 中?

我有一个浮点数组的 ArrayList ArrayList<float[]>,我想将其映射到Vector<array<float,size>>JniWrapper 中的 C++。

我点击了这个链接:

"从 Native java 返回一个字符串数组列表到 JNI "

并根据我的要求对代码进行了一些更改。

错误:

我是 JNI Wrappers 开发的新手。我需要帮助映射ArrayList<float[]>Vector<array<float,320>>.

0 投票
0 回答
52 浏览

scala - 使用 JNI 从 java 调用 Go 函数:未加载库

我正在尝试使用 JNI 从 scala 代码调用 go 函数。有问题的功能如下

为了启用 go call jx_GetIntArrayElements 我已经用代码创建了一个包装器 C lib

使用导出到 GO

编译进行得很好,并且创建了 go lib libnnturboroute 但是一旦我尝试使用 System.loadLibrary(library) 从 Scala 中加载 lib,我得到以下异常

异常或错误导致运行中止:/libnnturboroute.dylib: dlopen(/libnnturboroute.dylib, 1): Library not loaded: libwc.dylib。从 jvm 似乎无法从 JNI 公开的方法中加载 libwc.dylib。我知道需要从 JNI 代码中调用动态依赖库。但是我无法使用 golang 代码加载库,因为 C.dlopen 本身需要通过 C 包装库导入。

0 投票
1 回答
36 浏览

java - JavaCPP 错误:无法将参数 '1' 的 `char*` 转换为 `Abc*` 到 `void testMyObject(Abc*)`

我有一个带有外部函数的简单 cpp 文件。一个函数返回类 Abc 的引用,另一个接收它并调用一些方法:

以及调用 extern 函数的 Java 代码:

我这样称呼他们:

但我收到以下错误:"

我做了铸造,void*那就是: Abc* ob = (Abc*)p哪个有效。但我仅限于修改这些外部函数(设计问题!!)。有什么解决方法吗??

0 投票
1 回答
31 浏览

java - 尝试从 JAWT_DrawingSurface 获取锁定时出现 JAWT_LOCK_ERROR

介绍

我正在使用 JNIWrapper,以及该库的 JAWT 子组件。

我正在尝试使用以下代码获取JAWT_DrawingSurface上的锁定:

但我一直在dsLocked说假话。

细节

comp通过以下方式从 Java 发送到此 JNIWrapper 代码:

panel通过 runningVideoViewport()或 by都没有做太多事情getDisplay(),我不知道哪些细节是相关的。

问题

什么样的事情会导致获取表面上的锁失败?

0 投票
1 回答
87 浏览

android - JNI - Weird behavior using RxJava in native cpp callback function

I have a c++ function that I want to call from my Kotlin code. That c++ function gets a callback function as an argument, doing some work and calls the callback when completes.

I already done it a few times before and everything was OK. However, I want to wrap it in a way so instead of passing a callback, it will return an Observable that will emit a value when the callback is called.

I created an example with a simpler code. What I did so far:

Kotlin code:

Interface in Kotlin for the callback function:

Native JNI code:

A test function to run it all together

The test function runs 3 times the someFunc function (which return an Observable instance, emitting a String on completion) and concat all Observables together.

What I would expect to be printed:

However the actual result is:

It seems like everything work as expected, however, although the line println("Callback invoked. subject = $subject") is printed (with the correct subject addresses), the onNext is not working and not emitting anything for some reason. I checked the same functionality without the native callback stuff and everything works fine.

Any suggestions???

0 投票
0 回答
55 浏览

azure-storage - Windows 凭据不可用于 DCOM 组件

我有一个在 WildFly 23/Java 11/Windows 2016 上运行的 Java 应用程序服务。该应用程序的目的是从模板 (.dotx) 生成 Microsoft Word 文档 (.docx)。此应用程序读取模板并将生成的文档写入 Azure 存储帐户文件共享。访问文件共享所需的 Windows 凭据在与服务关联的用户的“控制面板\用户帐户\凭据管理器”中可见,并且生成服务按预期工作。

在第二阶段,Java 应用程序还可以将生成的 Word 文档转换为 PDF。对于转换过程,Java 应用程序使用 Microsoft Word 来打开生成的 Word 文档并将其保存为 PDF。

Java 应用程序使用 JNIwrapper 生成的 Java 包装器启动 Microsoft Word DCOM 组件:

INSTANCE.wordApplication = new _ApplicationImpl(CLSID.create(WORD_APPLICATION), ClsCtx.LOCAL_SERVER);

“Microsoft Word 97 - 2003 Document”DCOM 应用程序标识已修改为使用服务凭据运行应用程序,但 Word 文档的实例化失败。

当 Microsoft Word 尝试访问文件共享时,Sysinternals 的进程监视器会显示登录失败,而使用同一用户运行的 Java 进程成功。用户的 Windows 凭据似乎不适用于 Microsoft Word DCOM 组件。我可以做些什么来使这些凭据可用于 Microsoft Word DCOM 组件吗?

进程监视器文件相关事件

0 投票
1 回答
54 浏览

java-native-interface - 如何在 JNI 中使用自定义类类型参数调用 Java 函数

我正在尝试使用自定义类类型参数从 C++ 调用 Java 函数。问题是从 C++ 调用 Java 函数时会获取垃圾值(代码如下所示)。如果我使用任何其他数据类型(String、float、int)的参数,则相同的函数printClassVar可以正常工作。

这是Java代码

这是JNI代码

上面的代码返回

从 C++ 得到回调:1679598160(或任何垃圾签名的 int 值

0 投票
1 回答
46 浏览

java - 我可以在 Java 中控制 JNI 本机方法调用名称吗?

我遇到了一个问题。我将 Chilkat 用于 Java,据我所知,没有任何 Maven 回购。因为它是一个双组件库 - 我需要通过 System.load() 注入 .dll。这部分对我来说很清楚,但它们也提供了一些东西,比如包装器,它调用 .dll 中的方法。

所以,我不想将他们的 .jar 导入我的项目,但是,然后我自己调用本机方法,它因 java.lang.UnsatisfiedLinkError 而失败。因为,然后 java 尝试调用一个本地方法,它在它的名称的开头添加了一些东西。例如:如果我在我的包中声明了本机方法,那么它将被调用,java 会将所有包层次结构名称添加到它的名称中。

我可以以某种方式直接通过其名称调用本机方法,而无需任何运行时“适应”吗?

0 投票
1 回答
100 浏览

java - 将指针映射到 UInt64

我们正在使用 jniwrapper 从 JAVA 与第 3 方 DLL 进行通信。DLL 希望我们将指针作为 uint64_t 传递给回调函数。

因此,从jniwrapper中,我尝试使用 Void、Pointer 等从 Java 映射,但这些都不起作用。DLL 抱怨回调设置无效。所以我的问题是如何将回调作为 uint64_t 进行通信。有没有人使用 Jniwrapper 来满足这样的需求?谢谢