Вызовите функцию Java с параметром Map & lt; String, String & gt; из c ++ с помощью std :: map & lt; std :: string, std :: string & gt;

Как я могу позвонить Java функция, которая принимает Map<String, String> как параметр из C++ когда у меня есть std::map<std::string, std::string> в с ++.
Я знаю, как вызвать функцию Java из c ++, когда параметры являются простыми типами, например, int и так далее, но как вызывать Map

t.env->CallStaticVoidMethod(t.classID, t.methodID, params);

Есть ли хитрость для достижения этой цели?

Использовать разделенные два jobjectArrays of jstring и склеить по индексу к Map в функции Java или есть более элегантное решение?

2

Решение

Если функция Java принимает Map<String,String>Вы должны передать объект этого типа. Как вы заметили, C ++ std::map не является картой Java. Вы можете скопировать свой std::map<std::string,std::string> в недавно построенную Java Map<String,String> перед вызовом функции Java.

Для этого потребуется создать карту Java из C ++ (например, HashMap) и заполнить ее.

0

Другие решения


По вопросам рекламы [email protected]