我需要从 64 位 exe 访问 32 位 dll
我知道我阅读了有关代理进程的所有内容,并且我能够创建代理 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不太了解您所指的代理 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.
这无疑是你想要的:
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).