VS2022使用进程外Com服务让64位应用调用32位DLL

在日常开发中会遇到一种特别"狗"的情况是,你需要调用一个32位的dll文件,但是你的程序必须是64位的,然后你还没有dll的源码。¯\_(ツ)_/¯

这个时候就可以用进程外Com服务去调用,具体原理想要了解的可以自己去查。

环境是VS2022,普通的C++桌面组件。

 先新建一个ATL项目

 

 

 

 

 选择可执行文件

 然后右键刚才的项目,下面那个不管

 新建项

 进去模板,选择ATL,再选ATL简单对象

 在这个界面中,填入ProgID后要记下来,之后要用到

 VS就会帮我们新建好头文件和源文件,如图,添加调用32位dll的代码

 

 如图在接口中添加这行代码,目的是添加自己的接口以便64位程序调用

 记得这个ATL项目是要调用32位dll的,所以要32位编译,先生成这个ATL项目

 

然后新建一个64位的控制台项目来使用这个Com组件,记得修改图中要修改的地方,修改为之前要记的ProgID

 然后用64位编译器编译这个控制台项目,编译好后就可以使用了

新建一个批处理文件,用来注册Com组件,如图

 注册好后就可以调用了,直接点击测试用的控制台应用就得

 要注销Com组件就用 /unregserver

这样就好了,为了解决这个问题搞了好几天(っ◞‸◟c)

 

posted @ 2023-05-10 15:14  LuWeiReal  阅读(2584)  评论(2)    收藏  举报