【发布时间】:2014-04-06 19:54:35
【问题描述】:
我有 C# dll,它有一个函数
public static Int32[] remDup(Int32[] dArray){
return dArray.Distinct().toArray();
}
我有这个的jni函数
JNIEXPORT remDup..... ( jintArray dupArray){
// from java call i get dupArray
CsharpDLL::CSharpClass::remDup(/*pass an int32 array */)
}
我有 java 函数,它使用 jni 调用下面的函数
remDup (Int[] array)
我使用 C++ 包装器从 Java 调用 C# DLL...我已经花了半天的时间来找出将 jIntArray 传递给 C# dll 函数...但没有成功.. 尽我所能完成研发..
不同的技术
即array<System::Int32^)^ array, Marshal techniques,但仍然无法将数组从 C++ (JintArray) 传递到 C# DLL .. 请帮助或指导
【问题讨论】:
-
@Bogdan thnx 老兄!但是它在 ERROR 之后给出
"cli::array<int,1>^"类型的值不能用于初始化"cli::array<System::Int32^,1>^ "类型的实体 -
对不起,不熟悉 jintArray,但最坏情况的解决方案是创建一个与 jintArray 大小相同的新 cli::array
,然后使用 for 将所有元素设置为新数组并将其传递给 c# 函数 ... -
@Bogdan thanx 老兄,你的链接对我很有帮助......如果你能正确回答上述评论作为答案..我可以将其标记为答案:)
-
作为答案添加,我不追分,但有些人可能会在谷歌上搜索该问题,这对他们很有用;)
标签: c# java c++ arrays java-native-interface