Unreal Engine导入AWS库时出现链接器错误求助
UE5.5.4集成AWS Cognito:模块加载失败与链接错误排查方案
一、模块加载失败(无法加载'AwakeningPlayer')排查
- 严格匹配库的架构与编译模式:UE5.5.4默认使用64位编译,你的Cognito库必须对应
Win64架构,且Debug/Development/Shipping版本要和项目当前编译模式完全一致,禁止混用Debug和Release库。 - 确认插件配置正确性:在项目
Config/DefaultEngine.ini中检查AWS插件是否正确启用,模块名大小写敏感:[Plugins] EnabledPlugins+=AWSCore EnabledPlugins+=AWSCognitoIdentityProvider - 核对
.Build.cs模块依赖拼写:确保PublicDependencyModuleNames中添加的AWS模块名称完全正确,比如是AWSCognitoIdentityProvider而非简写或错写。
二、链接器错误(LNK2019/LNK2001/LNK1120)的额外处理步骤
除了添加模块到PublicDependencyModuleNames,这些步骤容易被忽略:
- 手动配置库路径与导入库:若Cognito库为手动导入(非UE官方插件),在
.Build.cs中添加库搜索路径与具体库文件,区分编译模式:// 指向第三方库的lib目录 PublicLibraryPaths.Add(Path.Combine(ModuleDirectory, "ThirdParty", "AWSCognito", "Lib")); // 根据编译模式加载对应库 if (Target.Configuration == UnrealTargetConfiguration.Debug) { PublicAdditionalLibraries.Add("AWSCognitoDebug.lib"); } else { PublicAdditionalLibraries.Add("AWSCognitoRelease.lib"); } - 部署运行时DLL:UE运行时需要加载对应DLL,可直接将DLL放入项目
Binaries/Win64目录,或在.Build.cs中通过RuntimeDependencies自动复制:RuntimeDependencies.Add(Path.Combine(ModuleDirectory, "ThirdParty", "AWSCognito", "Bin", "AWSCognito.dll")); - 适配UE5.5的编译规则变更:UE5.5对第三方库链接逻辑做了更严格的检查,需确保使用的是针对UE5.x预编译的AWS库,而非通用AWS SDK版本。若启用FastBuild,删除项目
Intermediate和Saved文件夹,清空缓存后重新生成VS项目编译。 - 确认符号导入导出:LNK2019多因函数符号未找到,检查Cognito库是否正确导出所需函数,或代码中是否用
DLL_IMPORT宏正确导入符号(官方UE版AWS库已处理此问题,需确认库版本适配)。 - 调整模块加载顺序:在
.Build.cs中通过PublicDependencyModuleNames确保AWS模块优先于你的AwakeningPlayer模块加载,同时在DefaultEngine.ini中把AWS插件放在自定义模块前启用。
三、通用排查技巧
- 查看VS输出窗口的详细错误:UE弹出的模块加载提示信息有限,打开Visual Studio的输出窗口,筛选"错误"类别,获取具体缺失的DLL或符号名称。
- 最小化测试:创建空白UE5.5项目,仅集成Cognito的最小功能代码,验证是否能正常运行,排除原项目的配置污染问题。
- 匹配Windows SDK版本:UE5.5默认使用Windows 10 SDK 10.0.22621.0,确认AWS库编译时使用的SDK版本与之一致,避免因SDK版本差异导致链接错误。
内容的提问来源于stack exchange,提问作者SaturnBowerBird




