Как я могу позвонить 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 или есть более элегантное решение?
Если функция Java принимает Map<String,String>
Вы должны передать объект этого типа. Как вы заметили, C ++ std::map
не является картой Java. Вы можете скопировать свой std::map<std::string,std::string>
в недавно построенную Java Map<String,String>
перед вызовом функции Java.
Для этого потребуется создать карту Java из C ++ (например, HashMap) и заполнить ее.