如何将x86架构的Discord Rich Presence代码集成到x64位dll中
x86架构Discord Rich Presence代码适配x64注入DLL的解决方案
方案1:直接迁移代码到x64(最推荐,性能最好)
- 先排查现有代码的x86专属依赖:包括
__asm块内的32位寄存器操作、硬编码的4字节指针长度、仅支持x86的第三方RPC库 - 移除所有x86专属逻辑后,直接把项目编译目标切换为x64即可:Discord官方RPC SDK原生提供x64版本的库文件,直接替换原有x86库即可,上层业务接口完全兼容,无需修改RPC相关代码
- 编译时注意匹配目标游戏的运行库版本(比如
/MD或/MT),避免注入后出现运行时依赖冲突
方案2:跨架构进程通信(无需修改原有x86代码)
- 把现有x86 RPC代码编译为独立的x86可执行程序后台运行
- x64注入DLL和x86进程之间通过本地进程通信通道传递状态数据,可选实现包括命名管道、共享内存、Windows消息队列
- 核心逻辑:x64 DLL从游戏进程读取需要展示的Rich Presence数据,发送给x86进程,由后者完成和Discord客户端的交互
该方案的缺点是存在一定的通信延迟,需要额外处理进程存活状态同步、异常退出兜底等逻辑
方案3:COM互操作(Windows平台专用,开发成本低)
- 将现有x86 RPC逻辑封装为32位COM组件并完成系统注册
- x64 DLL内直接调用COM组件暴露的接口,Windows系统会自动完成x86/x64架构之间的调度,无需手动实现通信逻辑
该方案适合不想手动写进程通信逻辑的场景,但需要掌握基础的COM组件开发、注册流程
内容的提问来源于stack exchange,提问作者YoooOoOoOOOOOo
相关产品推荐
相关产品推荐

