gpt4 book ai didi

java - 如何使用 JNA 将 List 从 Java 传递给 C++ std::vector 函数参数

转载 作者:行者123 更新时间:2023-11-28 06:06:36 26 4
gpt4 key购买 nike

我有一个原生函数:

int NativeFunction(std::vector<MyObject>);

我正在使用 JNA 加载 native dll,我正尝试从 Java 中调用此函数 NativeFunction,例如:

nativedlljnapointer.NativeFunction(List<MyObject>);

但是,我遇到了“java.lang.IllegalArgumentException:不支持的参数类型 ArrayList”异常。

当我遇到相同的异常“java.lang.IllegalArgumentException:不支持的参数类型 java.util.Vector”时,我尝试使用 java util vector

有人可以建议我如何将 List 从我的 Java 函数传递给以 vector<> 作为参数的 native 函数。

任何帮助将不胜感激。

最佳答案

std::vector和java List是完全不同的类型,不行很正常

此外,MyObject 是 C++ 定义的对象还是 Java 定义的对象(如果您分别定义一个对象,它们又是完全不同的对象!)?

通过 JNI 进行通信的最好和最安全的方法是使用序列化,就像您在任何两个不同环境之间所做的那样。

诚然,这需要一些额外的工作,但从长远来看,您最终会得到更健壮的代码。

关于java - 如何使用 JNA 将 List<T> 从 Java 传递给 C++ std::vector 函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32265053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com