【发布时间】:2015-07-26 14:28:31
【问题描述】:
我有一个 java 程序,它利用 JNI 访问用 C++ 编写的“dll”文件。最初我在使用 JNI 访问“dll”时遇到问题,但是当我了解“DLL 导出”时,使用它并能够调用封装在“dll”中的函数。现在我只能通过通过 java 链接的 c++ 代码调用写在“64-bit dll”中的函数。如果我试图调用嵌入在 32 位 dll 中的函数,编译器会产生错误或根本不给出结果。经过一个小时的“错误和编译”播放后,我发现使用 64 位 jdk 及其 JNI 功能我无法调用用 c++ 编写的 32 位 dll。我必须使用 32 位 jdk 通过其 JNI 访问 32 位 dll。
现在我正在寻找一种解决方案,使用它我什至可以访问 32 位 dll(我的旧代码是用 32 位 dll 编写的,不能编译成 64 位 dll)
来自 64 位 jdk。或者简单地说,我正在寻找这样的代码,使用它我可以从 64 位进程或 dll 访问用 c++ 编写的 32 位 dll 代码。除此之外,我想提一下,我已经完成了“stackoverflow”提供的所有解决方案,以“从 64 位进程访问 -32 位 dll”,但我没有发现其中任何一个对我来说是足智多谋的。他们提到了“COM”和“Surrogate Process”,
但我无法连接如何使用这个东西来解决我遇到的问题。因此,任何人都可以建议我从 64 位 dll 访问 32 位 dll 的纯粹解决方案或指导或“参考书”。
注意:请不要对这个问题投反对票,因为我真的说到目前为止“堆栈溢出”中没有为这个问题提供适当的解决方案。
【问题讨论】: