c++ - 分发使用 JNI 的应用程序的最佳方式

标签 c++ windows visual-studio-2010 java-native-interface installation

我目前正在开发一个 Windows 桌面应用程序,该应用程序使用 JNI 调用位于 jar 文件中的方法。

我需要知道打包我的应用程序的最佳方式,以便它可以链接到 jvm.dll。我不确定是否应该将在 JDK 的 bin 目录中找到的所有二进制文件打包到我的安装文件中(不确定是否允许我这样做)?

问题是网上找到的所有例子都是直接在JDK安装路径下找到jvm.dll的链接。由于我的应用程序是商业应用程序,因此我不能依赖或要求每个用户都应该在我的应用程序旁边安装 JDK,因为那太荒谬了。

请问有人可以阐明打包此类应用程序的最佳方法吗?

问候

最佳答案

jvm.dll 也随普通 java 运行时一起安装(bin/client 子目录)。通过检查一些注册表值,您可以找到它的路径,从那里加载它并检查是否安装了正确的版本。如果您已经链接了 jvm.lib,则需要将 jvm.dll 添加到延迟加载的 dll 列表中,以便您可以在运行时加载它。

详情请看我最近对另一个问题的回答:
https://stackoverflow.com/a/14434203/93652

关于c++ - 分发使用 JNI 的应用程序的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14435858/

相关文章:

基于 UNIX 套接字的客户端程序中的 C++ connect() 不建立与服务器的连接

php - 为什么 netbeans 项目创建对话框中缺少 php 类别?

visual-studio-2010 - Visual Studio 2010 - 尝试在文件中查找时禁用 "Find All"按钮

windows - Windows 10 上的 GHC -fhpc 代码覆盖率

c++ - 使用 Direct3D 9 在硬件中将 RGB 表面转换为 YUV

sql-server - 使用 SQL Server Management Studio 附加(打开)mdf 文件数据库

c++ - 在 C++ 中将单反斜杠转换为双反斜杠

c++ - 为我的链表实现一个迭代器类。 using关键字是什么?

c++ - 获取 Hugepagesize 的 Linux API

c++ - 将函数标记为脏(指定调用者应保存所有寄存器)