我需要从 64 位 exe 访问 32 位 dll

发布于 2024-09-24 19:05:10 字数 204 浏览 8 评论 0原文

我知道我阅读了有关代理进程的所有内容,并且我能够创建代理 COM,但它要么全部在 32 位中工作,要么全部在 64 位中工作。

正确的结构是什么?

1) 32.dll <- 64.com <- 64.exe 2) 32.dll <- 32.com <- 64.exe

我尝试了以上两种方法,但没有成功调用 32.dll?

I know I read all about surrogate process, and I was able to create a surrogate COM but it either all works in 32bit or all works in 64bit.

What would be the correct structure?

1) 32.dll <- 64.com <- 64.exe
2) 32.dll <- 32.com <- 64.exe

I tried both of the above but I did not succeed to call the 32.dll?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

¢好甜 2024-10-01 19:05:10

我不太了解您所指的代理 COM,但我已经通过在中间引入 COM 对象解决了这个问题(使用 64 位 exe 中的 32 位 dll):

32.dll <-> 32位进程外com-server.exe <-> 64.exe。

抱歉,这可能就是您所说的 32.com 的意思,不确定,但请确保中间 COM 对象位于 .exe(进程外)中,而不是位于 dll 中。这与您无法将原始 32.dll 加载到 64 位进程中的原因相同。

I'm not too informed about the surrogate COM you refer to but I've solved this problem (Using a 32bit dll from a 64bit exe) by introducing a COM object in the middle:

32.dll <-> 32bit-out-of-process-com-server.exe <-> 64.exe.

Sorry this might be what you mean by 32.com, not sure, but make sure the intermediate COM object lives in an .exe (out of process) and not in a dll. This is for the same reason you can't load the original 32.dll into the 64 bit process.

最偏执的依靠 2024-10-01 19:05:10

这无疑是你想要的:
32.dll <- 32.com <- 64.exe
如果它不起作用,请显示它不起作用的更多详细信息。

另外,如果您不进行太多调用,您可以通过套接字进行通信(只是一个备用计划)。

This is defenetly what you want:
32.dll <- 32.com <- 64.exe
If it does not work, show more details HOW it does not work.

Also, if you are not doing much calls, you may communicate via sockets (just a backup plan).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文