C# 64位 程序 如何 动态载入(读取) C++ 开发的 32位 DLL?
所谓动态载入,就是运行时,使用到 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,待尝试。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~