【问题标题】:JNI call c++ dll occured 'UnsatisfiedLinkError: Invalid access to memory location'JNI 调用 c++ dll 发生“UnsatisfiedLinkError: Invalid access to memory location”
【发布时间】:2013-12-04 06:49:06
【问题描述】:

我想在我的 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,没有出现依赖错误。所以我很不解。我该怎么办?

【问题讨论】:

  • 你试过重装JDK吗?
  • 是的,我已经重新安装了 JDK 的两个版本,但它也不可用。
  • 这显然是您的 Java 的问题。检查您是否安装了所有必要的要求,是否安装了所有补丁并安装了 32 位版本的 JDK。尝试在干净的 XP SP3 安装上运行它。
  • 我使用的JDK是32位版本。我已经安装了所有我能安装的补丁,但结果是同样的错误。 :(
  • 你会发布你的 DllMain 代码吗?

标签: c++ dll java-native-interface


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-21
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多