gpt4 book ai didi

java - 将JVM嵌入C++应用程序:如何正确链接它?

转载 作者:行者123 更新时间:2023-12-02 10:11:50 26 4
gpt4 key购买 nike

目标
比方说,我们有一个大型的C++应用程序,它可以执行一些大型工作,而使用C++可以很好地完成这些工作。但是,有很多逻辑,我们希望在JVM上运行。
问题
为了测试上述方法,我使用CLion创建了small C++ project
场景是:
构建(由CMake自动执行):

$JAVA_HOME/lib/jvm.lib

  • 链接代码段
  • 使用刚创建的$JAVA_HOME将所有DLL从exe复制到目录

  • 跑:
  • 创建嵌入式JVM
  • 调用此JVM托管的静态方法

  • 我尝试了Visual Studio 2019社区和MinGW64(x86_64-8.1.0-posix-seh-rt_v6-rev0)工具链,两者均导致了相同的结果。
    我使用OpenJDK( jdk-14.0.2)获得的最佳结果:
    Error occurred during initialization of VM
    Failed setting boot class path.
    Oracle JDK 1.8显示了一些不同的故障:
    Error occurred during initialization of VM
    Unable to load native library: Can't find dependent libraries
    我还尝试了与 ojdkbuild不同的版本,最好的是 env->FindClass调用中的SEGFAULT。
    问题
  • 哪种JVM发行版更适合用于嵌入C++?
  • 如何正确链接和分发所有内容?
  • 最佳答案

    What distribution of JVM is better to use for embedding to C++?


    嵌入没有什么区别,因为其中很大一部分只是经过细微调整的OpenJDK代码。

    How to link and distribute it all properly?


    copy all DLLs from $JAVA_HOME to the directory with just created exe


    这是行不通的,因为JVM需要更多功能。
    您将不得不分发JDK的一部分,仅DLL是不够的,因为缺少所有类库。您可以尝试使用 jimage构建较小的图像。这将包括所有相关部分(= JVM,Classlibraries,本地库)
    要链接到JVM,您需要使用正确的方法。

    关于java - 将JVM嵌入C++应用程序:如何正确链接它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63223094/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com