3 回答
TA贡献1780条经验 获得超5个赞
我们在 C++/Java 集成方面做了很多工作。跨边界传递复杂数据结构的问题是您必须编组方法调用,这可能是一项非常复杂且容易出错的工作。我发现做这样的事情要容易得多:
在 Java 端,使用 gson 或 jackson 将您的地图序列化为 JSON
越界传递 JSON 字符串
在 C++ 端将 JSON 反序列化为 std::map
我对 C++ 方面不太熟悉,但我看到这里解决了类似的问题
TA贡献1824条经验 获得超8个赞
TA贡献1884条经验 获得超4个赞
您可以使用scapix::link::java C++ JNI 库在许多 C++ 和 Java 类型之间自动转换。这是一个例子:
#include <scapix/java_api/java/lang/System.h>
#include <scapix/java_api/java/util/Locale.h>
#include <scapix/java_api/java/text/DateFormatSymbols.h>
using namespace scapix::link::java;
using namespace scapix::java_api;
void test1()
{
// C++ objects are automatically converted to and from corresponding Java types.
// This works for any type supported by scapix::link::java::convert() interface,
// which supports many STL types and can be extended for your own types.
std::string version = java::lang::System::getProperty("java.version");
std::vector<std::string> languages = java::util::Locale::getISOLanguages();
std::vector<std::vector<std::string>> zone_strings = java::text::DateFormatSymbols::getInstance()->getZoneStrings();
std::map<std::string, std::string> properties = java::lang::System::getProperties();
}
添加回答
举报