And*_*rew 6 java java-native-interface
我有Visual Studio C++项目,它必须调用一些java功能.我打算用JNI.我已指定其他包含目录:
C:\Program Files (x86)\Java\jdk1.7.0_10\include
C:\Program Files (x86)\Java\jdk1.7.0_10\include\win32
和其他库目录
C:\Program Files (x86)\Java\jdk1.7.0_10\lib
并能够编译所需的代码.但由于下一个错误,我仍然无法运行它:
The program can't start bacause jvm.dll is missing...
我假设,最简单的方法是将dll复制到项目目录中.但我不知道哪一个.例如,我发现它们很少有不同之处:
C:\Program Files (x86)\Java\jdk1.7.0_10\jre\bin\client\jvm.dll
C:\Program Files (x86)\Java\jdk1.7.0_10\jre\bin\server\jvm.dll
C:\Program Files (x86)\Java\jre7\bin\client\jvm.dll
那么,我应该复制哪一个?
你试图以错误的方式解决问题。您不应该jvm.dll四处复制,而是设置一个正确的JAVA_HOME环境变量,指向C:\Program Files (x86)\Java\jdk1.7.0_10\或C:\Program Files (x86)\Java\jre7\。java然后通过参数-client或(无参数时默认)选择DLL的版本-server。
更新:现在重新阅读这个问题,我发现该场景正在运行本机程序并从中调用 JVM,而不是(更常见)从 JVM 调用本机 lib。在这种情况下,本机程序确实需要访问jvm.dll. 当从JVM调用native lib时,jvm.dllJVM已经预加载了native lib,native lib不需要关心它。
| 归档时间: |
|
| 查看次数: |
8273 次 |
| 最近记录: |