64位程序可以调用32位dll 吗

64位程序可以调用32位dll 吗,第1张

工作流程:

1.创建一个进程外COM服务器(EXE)。

2.将32位dll的接口函数封装为COM服务器的相关接口。

3.注册COM服务器*.exe /regserver (注销 *.exe /unregserver)。

4.64位进程调用32位COM服务器接口,成功。从而曲线实现了64位进程调用32位dll。

具体步骤:

我首先创建了一个简单的dll工程,只输出一个函数int c = add(int a,int b)生成lib和dll

然后创建一个进程外COM(EXE类型),内部链接dll,添加方法Method: Add(long *c)

{ *c = add(1,2)}编译生成。

然后注册COM,*.exe /regserver

最创建一个64位WIN32工程验证64位环境下方法调用是否正确,经验证正确!!!

结论:以上方法可以解决64位进程调用32位dll的问题

32位进程调用64位dll应该也可以通过这种方法解决,原因64位windows系统下安装了32位和64位两套COM系统

在64bit平台上,在32bit平台上调试通过之后,很容易就生成了64bit的驱动文件这个问题最终是这样解决的。

总结:

32bit的进程是可以调用64bit的驱动(sys文件)的;但是32bit的进程不能调用64bit的进程,更换到64bit平台上:我使用WDF重新编写了驱动程序,例如我的32bit的VB软件就不能够调用64bit的DLL,完全可以使用32bit的DLL和32bit的进程。因此我的软件不用做任何改动,在64bit平台上直接使用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7796330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存