[英]DLL using JNI Java classes
我正在写一个C ++ dll(Visual Studio中的文件扩展名是.cpp,但代码是C),它使用JNI加载和调用某些Java类的实例方法。 结果,我的项目由C ++源文件和头文件以及一些Java类文件(通过JNI使用的Java对象的类文件)组成。 我想创建一个单一的dll库,其中还包括“单个捆绑包”中的Java类文件。 是否可以将C和Java文件都放入dll?
这完全有可能,尽管不一定直观。 我还没有测试过,但是我想如果您知道自己在做什么,它将很容易工作。
首先,您将需要一种将类文件的二进制文件打包到您拥有的本机二进制文件中的方法,然后当然可以在任何时间点无缝读取该块。 如何实现这取决于您,没有真正的“正确方法”来做到这一点。
话虽如此,如果您可以获取.class文件数据所驻留的内存的句柄(在加载DLL之后),并将其作为byte[]
或ByteBuffer
传递给Java,那么您将想要使用ClassLoader
任何一个的defineClass
重载以及对findLoadedClass
的调用,然后是对loadClass
的调用。
这将使您几乎可以从任何数据源加载类。 如前所述,如何存储/检索该类的本机数据由您决定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.