用C+包装Java库+;(JNI) 我有一个C++程序,需要使用一个特定的java库。理想的是,我想创建一个等价的C++库来封装现有的java代码。因此,我一直在研究JNI调用API
由于我不是一个经验丰富的程序员,而且我对JNI和多语言编程也缺乏经验,因此我非常希望能得到一些关于如何解决这个问题的一般性的指导/提示/建议 我特别想知道的事情:用C+包装Java库+;(JNI) 我有一个C++程序,需要使用一个特定的java库。理想的是,我想创建一个等价的C++库来封装现有的java代码。因此,我一直在研究JNI调用API,java,c++,java-native-interface,libraries,jniwrapper,Java,C++,Java Native Interface,Libraries,Jniwrapper,由于我不是一个经验丰富的程序员,而且我对JNI和多语言编程也缺乏经验,因此我非常希望能得到一些关于如何解决这个问题的一般性的指导/提示/建议 我特别想知道的事情: 是否应该将java LIB映射中的每个java类都转换为关联C++ 上课?也就是说,在我的C++库中,我会有一个类,每个调用 特定Java类的JVM?或者我将拥有一个单一的JVM,通过它可以访问所有内容?最好的方法是什么?为什么 这样做的基本过程和架构是什么 使用调用API?< /LI>有没有用于从java LIB创建C++ LIB的
非常感谢 我以前做过,但这不是为胆小的人准备的,尤其是当两种语言之间的接口很难实现时。在这种情况下,调试也是一件痛苦的事情 要回答您的观点:
#包括
#包括
#包括
使用名称空间scapix::link::java;
使用名称空间scapix::java_api;
void test1()
{
//C++对象自动转换为相应的java类型。
//这适用于scapix::link::java::convert()接口支持的任何类型,
//它支持许多STL类型,并且可以为您自己的类型进行扩展。
std::string version=java::lang::System::getProperty(“java.version”);
std::vector languages=java::util::Locale::GetIsolagues();
std::vector zone_strings=java::text::DateFormatSymbols::getInstance()->getZoneStrings();
std::map properties=java::lang::System::getProperties();
}
太好了,谢谢你。在我的例子中,我只对运行Java库中的一些方法感兴趣,但是,这些方法需要从库中的许多不同类创建许多对象。我已经和JNI玩过了,遇到了同样的问题!虽然我确实设法得到一个JVM并运行在最后:谢谢你的建议-多考虑!