You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Godot引入依赖外部DLL的Rust库报错126如何解决?

Godot + Rust 调用DLL报错Error 126解决方案

问题根因

Windows系统动态库加载逻辑和Linux存在差异,Error 126表示加载目标DLL时,其链式依赖中的某个库未被系统找到,并非你引用的dylib.dll本身缺失。

排查步骤

1. 检查完整依赖链

使用Visual Studio自带的dumpbin工具查看所有依赖项,确认没有缺失的库:

# 查看你的Rust编译的dylib.dll的所有依赖
dumpbin /dependents project/libs/dylib.dll
# 查看GameNetworkingSockets.dll的所有依赖
dumpbin /dependents project/libs/GameNetworkingSockets.dll

重点检查是否存在未随程序分发的依赖,比如vcpkg编译生成的其他动态库、VC++运行时库、加密库等,所有输出的依赖DLL都需要和你的程序放在一起。

2. 修正DLL存放路径

Windows默认不会在DLL所在的子目录下搜索其依赖,Godot运行时的默认搜索顺序为:

  • Godot编辑器/导出程序的所在目录
  • 系统C:\Windows\System32目录
  • 环境变量PATH中配置的目录
  • 进程当前工作目录(编辑器运行时为项目根目录,即project.godot文件所在目录)
    你将DLL放在project/libs子目录下时,Godot可以通过配置的GDNative路径找到dylib.dll,但dylib.dll加载GNS的DLL时,系统无法定位到libs子目录下的文件,解决方案二选一:
  • 把所有依赖的DLL(dylib.dll、GameNetworkingSockets.dll及其所有依赖)统一放在项目根目录下,不要放在子目录
  • 添加自动加载脚本,在GDNative库加载前将libs目录加入系统PATH,脚本优先级设为最高:
extends Node
func _ready():
    var lib_abs_path = OS.get_executable_path().get_base_dir().path_join("libs")
    OS.set_environment("PATH", OS.get_environment("PATH") + ";" + lib_abs_path)

3. 验证编译架构匹配

确认以下组件的架构完全一致,架构不匹配也会触发Error 126:

  • Rust工具链架构:你使用的是nightly-x86_64-pc-windows-msvc,对应64位
  • GameNetworkingSockets编译架构:vcpkg编译时选择的是x64-windows而非x86-windows
  • Godot编辑器/导出程序架构:使用64位版本,不要用32位版本

4. 检查VC++运行时依赖

vcpkg默认动态链接VC运行时,若目标设备未安装对应版本的Visual C Redistributable包,也会出现依赖缺失,可选择:

  • 安装对应版本的VC++运行时包
  • 编译GNS时选择静态链接CRT,或随程序分发对应版本的vcruntime140.dll、msvcp140.dll等运行时库

内容的提问来源于stack exchange,提问作者Modamog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:57:02