如何执行c++;使用Base64字符串而不将其写入HDD? 我如何在一个BASE64中执行一个包含在我的C++ exe文件中的JAR文件而不在HDD上写入呢? 在硬盘上没有2个文件的情况下,是否可以从内存或类似的东西执行它
提前感谢使用JNI:如何执行c++;使用Base64字符串而不将其写入HDD? 我如何在一个BASE64中执行一个包含在我的C++ exe文件中的JAR文件而不在HDD上写入呢? 在硬盘上没有2个文件的情况下,是否可以从内存或类似的东西执行它,c++,jar,include,base64,shellexecute,C++,Jar,Include,Base64,Shellexecute,提前感谢使用JNI: 创建一个JVM实例 在解码数据上创建ByteArrayInputStream base64 jar字符串 创建JarInputStream并将 比提亚因普特溪 迭代JarInputStream中的每个jarEntry,然后 用类加载器加载该类 将每个类存储在 快速访问 另一种方法是调用JNI: jclass DefineClass(JNIEnv*env,const char*name,jobject加载器, const jbyte*buf,jsize bufLen) 示
- 创建一个JVM实例
- 在解码数据上创建ByteArrayInputStream base64 jar字符串
- 创建JarInputStream并将 比提亚因普特溪李>
- 迭代JarInputStream中的每个jarEntry,然后 用类加载器加载该类
- 将每个类存储在 快速访问
jclass DefineClass(JNIEnv*env,const char*name,jobject加载器,
const jbyte*buf,jsize bufLen)代码>
示例:
我将这个示例添加到我的Github中,因为它太大了,无法安装在StackOverflow上。注意:您不需要我编写的JNI包装器。如果您使用原始JNI,代码将减少一吨
包装器来自我很久以前编写的一些遗留代码,我决定只使用它,让它为我跟踪JavaVM和JNIEnv
编辑:注意我硬编码了libJVM和libJNI的路径:
因为没有它,我无法让JVM在OSX上运行。为什么要避免使用HDD?操作系统可能会将部分程序放在HDD上,并仅在必要时加载它们。因此,您的程序可能正在使用硬盘。我的想法与launch4j类似,但我不知道它是如何工作的,因为launch4j exe已被检测为病毒。您可以编写一个示例吗?这是我第一次在C++上使用JNI,我读过一些教程,但是我不明白怎么做。this@MarcoEliteC98增加了一个例子。