• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#64位程序如何动态载入(读取)C++开发的32位DLL?

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

所谓动态载入,就是运行时,使用到 kernel32.dll 中的 LoadLibrary() 去载入 32 位的 DLL。

问题来了,在64位 WIN 环境下,Windows\System32\Kernel32.dll 是 64位 !!!!真正的 32位 kernel32.dll 在 Windows\SysWOW64\ 下,按原来 Windows 的思路,Windows\System 放的是16位 DLL,System32放的是32位DLL,那么64位系统DLL,就应该放到 System64下啊!!!你说这些阿三干的是啥?所以,就会发生 64位 C# 程序使用 Windows\System32\kernel32.dll 中的 LoadLibrary() 时,载入不了 32位 DLL 的情况。

 

解决方法:

首先,最简单的方法,就是牺牲 C# 64位的特点,把工程输出 从 AnyCPU 改为 x86。这样就是一路32位了(其实就变成 32位 C#程序 动态调用 32位 C++ DLL了)。

其次,有人提出一个方法就是 做一个 ATL COM 的封装服务EXE,用那个去 载入 32位的DLL,待尝试。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中SOCKET多线程编程实例发布时间:2022-07-18
下一篇:
C#中几个基础控件属性介绍发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap