如何从64位进程或64位dll

时间:2015-07-26 14:28:32

标签: c++ dll com corba dcom

我有一个java程序,它利用JNI访问" dll"用C ++编写的文件。最初我访问" dll"使用JNI,但当我开始了解" DLL export"时,使用它并且能够调用封装在内部的函数" dll"。现在我只能调用写在里面的函数& #34; 64位dll"通过java链接的c ++代码。如果我试图调用嵌入在32位dll中的函数,编译器会产生错误或根本不给出结果。经过一个小时的错误和编译后#34;玩,我发现使用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"和"代理流程", 但是我无法将这个东西用来解决我遇到的问题。所以任何人都可以建议我一个纯粹的解决方案或指导或参考书"从64位dll访问32位dll。

注意:请不要低估对这个问题的投票,因为我真的说到目前为止在#stack; stack overflow"中没有提供适当的解决方案。对于这个问题。

2 个答案:

答案 0 :(得分:0)

您可以使用代理,其中包含大量有关如何设置代理以在其所需架构中加载组件的信息。

问题是,如果您的接口不支持编组,或者组件具有线程或进程本地行为,则它将无法正常工作。因此,只有可以远程使用的组件才能正常工作。

在尝试代理方法之前检查您的组件。

答案 1 :(得分:-1)

你根本无法做到你所要求的,而且有很多资源可以解释这一点。 64位进程只能调用64位DLL,32位也是如此。你不能混搭。这就是Windows(和Linux)的工作方式。

正确的解决方案是将C ++代码编译为32位和64位DLL。