Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何执行c++;使用Base64字符串而不将其写入HDD? 我如何在一个BASE64中执行一个包含在我的C++ exe文件中的JAR文件而不在HDD上写入呢? 在硬盘上没有2个文件的情况下,是否可以从内存或类似的东西执行它_C++_Jar_Include_Base64_Shellexecute - Fatal编程技术网

如何执行c++;使用Base64字符串而不将其写入HDD? 我如何在一个BASE64中执行一个包含在我的C++ exe文件中的JAR文件而不在HDD上写入呢? 在硬盘上没有2个文件的情况下,是否可以从内存或类似的东西执行它

如何执行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) 示

提前感谢使用JNI:

  • 创建一个JVM实例
  • 在解码数据上创建ByteArrayInputStream base64 jar字符串
  • 创建JarInputStream并将 比提亚因普特溪
  • 迭代JarInputStream中的每个jarEntry,然后 用类加载器加载该类
  • 将每个类存储在 快速访问
另一种方法是调用JNI:

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增加了一个例子。