2015-09-04 42 views
2

我怎麼能說Java函數,它接受Map<String, String>C++參數時,我有std::map<std::string, std::string>在C++。 我知道如何從C++調用Java函數時,參數簡單類型爲int和等,但如何調用的地圖與參數地圖<String,字符串>從C++用的std ::地圖<的std :: string,的std :: string>調用Java功能

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

有什麼絕招實現這一目標?

使用分離的兩個jobjectArrays of jstring並粘貼到Java的Map函數中還是有更優雅的解決方案?

+0

如果Java函數修改了映射,則必須在函數返回後同步更改。 –

+0

如果Java函數保持對參數的引用,則可能需要重新考慮事項。 –

+0

使用JavaCPP之類的工具,您可以簡單地使用Java中的std :: map std :: string,std :: string> C++對象,並從那裏執行所需的任何操作。如果您想了解更多詳情,請告訴我。 –

回答

0

如果Java函數採用Map<String,String>,則必須傳遞該類型的對象。正如您已經注意到的,C++ std::map不是Java Map。在調用Java函數之前,您可以將std::map<std::string,std::string>複製到新構建的Java Map<String,String>中。

這需要從C++(例如,HashMap)創建一個Java Map並填充它。

相關問題