目前,java调用C#内的普通函数(只有int,double,返回值为int等),没有问题。由于有一组数据需要传给dll处理,需要向C#传递List<String>参数的函数;
而在调用时就出现运行错误(编译没问题,哈哈 指针什么的java不太认识,也与C#的CLR有关吧)。
另外,函数处理完了后,还得向Java返回List<String>对象。
如何处理呢?目前,暂定使用文件进行参数传递,共享内存文件的还未施行。
如果List参数能正常处理的话,工作会处理会快些,也方便不少。所以,目前C#中取得jobjectarray的基本类还没有,
而jobjectarray与jenv如何关联上呢。请专家和Java高手帮忙。另外,别建议我使用C++ dll封装下C# dll噢。
上次,调试Managed C++没有通过,无法使C++ dll和C# dll整合在一起,郁闷了一阵子。
能帮我解决Managed C++ 和C# dll 导出 XXX.netmodule也行,呵呵~~Java 调用C#过程,参考如下:
Java -> JNI -> C++ dll <== Managed C++ ==> C# dll
而在调用时就出现运行错误(编译没问题,哈哈 指针什么的java不太认识,也与C#的CLR有关吧)。
另外,函数处理完了后,还得向Java返回List<String>对象。
如何处理呢?目前,暂定使用文件进行参数传递,共享内存文件的还未施行。
如果List参数能正常处理的话,工作会处理会快些,也方便不少。所以,目前C#中取得jobjectarray的基本类还没有,
而jobjectarray与jenv如何关联上呢。请专家和Java高手帮忙。另外,别建议我使用C++ dll封装下C# dll噢。
上次,调试Managed C++没有通过,无法使C++ dll和C# dll整合在一起,郁闷了一阵子。
能帮我解决Managed C++ 和C# dll 导出 XXX.netmodule也行,呵呵~~Java 调用C#过程,参考如下:
Java -> JNI -> C++ dll <== Managed C++ ==> C# dll
谁需要的话,可以共享。Java调用C#的,对象参数好像不太容易哦。
什么IntPtr,[DllImport("kernel32.dll")] 还得靠底层OS帮忙;GlobalReference gref。
原理:应该是C#申请使用的内存地址,传递到java内,然后使用java类型合适转换下;同样,java的对象必须
在c#内能使用其class,再进行转化。两者之间,通过内存地址进行交换处理。
我是说,函数参数能传递List就行了,里面存放的就是String型。
不是"这个字符串",而实际是字符串数组,在C#内得到数据并处理就行。当然可以放自己定义的类对象了,那样只会比处理String更难。
所以,给了个简单处理List<String>参数就足够了。重点是需要能处理对象参数,再返回对象到java里,剩下的都好办。