c++ - JNI 调用 c++ dll 发生 'UnsatisfiedLinkError: Invalid access to memory location'

标签 c++ dll java-native-interface

我想在我的 java 项目中使用 JNI 调用我的 C++ dll。但是有一个奇怪的错误:'UnsatisfiedLinkError: Invalid access to memory location'。我的环境是:Windows xp sp3、jdk 1.7.0_01(和 jdk 1.6.23)、vistual studio 2010。但我在 win7(64 位)(使用相同的项目和相同的 jdk 和 vs2010)中进行操作,没有错误. 我用dependcy walker检查了dll,没有依赖错误。所以我很疑惑。我该怎么办?

最佳答案

我猜您正试图在两种环境中使用相同的 DLL?如果是这种情况,您的 DLL 必须编译为 32 位 DLL,并且您必须在 Win7-64 上使用 32 位 JVM。您可能希望考虑发布 32 位和 64 位版本的 Java 应用程序并动态加载适当的库。如果您确定没有 32/64 位冲突,请提供有关失败原因和失败原因的更多信息。

关于c++ - JNI 调用 c++ dll 发生 'UnsatisfiedLinkError: Invalid access to memory location',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13836576/

相关文章:

c++ - 在我点击 "build"按钮后,Visual Studio 2019 总是重建一切

c++ - 循环内声明的生命周期

c++ - 将代码从 map<char, T> 重构为 vector<T>

dll - 在 dll 集合中搜索字符串

java - 弱引用的 NewGlobalRef 仍然阻止对象被垃圾收集

c++ - 无法在 OpenSSL 中设置公钥/私钥

python - 在 Windows 上安装 Theano - DLL 加载失败

c++ - Winbio.h No such file or directory 错误

Android Studio + NDK - 导入现有的 C++

java - 使用 JNI : Is this an issue with my code, 从 Java 调用 native (C++) 函数时发生访问冲突或已知问题?