我在升级了Visual Studio 2022 17.9.6版本之后编译我的虚幻项目就出现了意义不明的报错
1>Building 66 actions with 2 processes...
1>[1/66] Compile SharedPCH.Engine.ShadowErrors.cpp
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(1048): error C2440: “<function-style-cast>”: 无法从“const From *”转换为“TStringConversion<TStringConvert<From,To>,128>”
1> with
1> [
1> From=TCHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(1048): note: “TStringConversion<TStringConvert<From,To>,128>::TStringConversion”: 没有重载函数可以转换所有参数类型
1> with
1> [
1> From=TCHAR,
1> To=ANSICHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(689): note: 可能是“TStringConversion<TStringConvert<From,To>,128>::TStringConversion(const StringConv::FUnused *)”
1> with
1> [
1> From=TCHAR,
1> To=ANSICHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(1048): note: “TStringConversion<TStringConvert<From,To>,128>::TStringConversion(const StringConv::FUnused *)”: 无法将参数 1 从“const From *”转换为“const StringConv::FUnused *”
1> with
1> [
1> From=TCHAR,
1> To=ANSICHAR
1> ]
1> and
1> [
1> From=TCHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(1048): note: 指向的类型不相关; 转换需要 reinterpret_cast、C 样式强制转换或带圆括号的函数样式强制转换
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(737): note: 或 “TStringConversion<TStringConvert<From,To>,128>::TStringConversion(FromRangeType &&)”
1> with
1> [
1> From=TCHAR,
1> To=ANSICHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(698): note: 或 “TStringConversion<TStringConvert<From,To>,128>::TStringConversion(const SrcBufferType *,int32)”
1> with
1> [
1> From=TCHAR,
1> To=ANSICHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(677): note: 或 “TStringConversion<TStringConvert<From,To>,128>::TStringConversion(const SrcBufferType *)”
1> with
1> [
1> From=TCHAR,
1> To=ANSICHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(1048): note: 尝试匹配参数列表“(const From *)”时
1> with
1> [
1> From=TCHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(1048): note: 模板实例化上下文(最早的实例化上下文)为
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Misc\SecureHash.h(75): note: 查看对正在编译的函数 模板 实例化“auto StringCast<ANSICHAR,128,TCHAR>(const From *)”的引用
1> with
1> [
1> From=TCHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(1048): error C2440: “<function-style-cast>”: 无法从“const From *”转换为“TStringConversion<TStringConvert<From,To>,128>”
1> with
1> [
1> From=ANSICHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(1048): note: “TStringConversion<TStringConvert<From,To>,128>::TStringConversion”: 没有重载函数可以转换所有参数类型
1> with
1> [
1> From=ANSICHAR,
1> To=TCHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(689): note: 可能是“TStringConversion<TStringConvert<From,To>,128>::TStringConversion(const StringConv::FUnused *)”
1> with
1> [
1> From=ANSICHAR,
1> To=TCHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(1048): note: “TStringConversion<TStringConvert<From,To>,128>::TStringConversion(const StringConv::FUnused *)”: 无法将参数 1 从“const From *”转换为“const StringConv::FUnused *”
1> with
1> [
1> From=ANSICHAR,
1> To=TCHAR
1> ]
1> and
1> [
1> From=ANSICHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(1048): note: 指向的类型不相关; 转换需要 reinterpret_cast、C 样式强制转换或带圆括号的函数样式强制转换
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(737): note: 或 “TStringConversion<TStringConvert<From,To>,128>::TStringConversion(FromRangeType &&)”
1> with
1> [
1> From=ANSICHAR,
1> To=TCHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(698): note: 或 “TStringConversion<TStringConvert<From,To>,128>::TStringConversion(const SrcBufferType *,int32)”
1> with
1> [
1> From=ANSICHAR,
1> To=TCHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(677): note: 或 “TStringConversion<TStringConvert<From,To>,128>::TStringConversion(const SrcBufferType *)”
1> with
1> [
1> From=ANSICHAR,
1> To=TCHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(1048): note: 尝试匹配参数列表“(const From *)”时
1> with
1> [
1> From=ANSICHAR
1> ]
1>E:\ep\UE_5.0\Engine\Source\Runtime\Core\Public\Containers\StringConv.h(1048): note: 模板实例化上下文(最早的实例化上下文)为
1>E:\ep\UE_5.0\Engine\Source\Runtime\TypedElementFramework\Public\Elements\Framework\TypedElementData.h(64): note: 查看对正在编译的函数 模板 实例化“auto StringCast<TCHAR,128,ANSICHAR>(const From *)”的引用
1> with
1> [
1> From=ANSICHAR
1> ]
1>D:\visvual IDE\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets(44,5): error MSB3073: 命令“E:\ep\UE_5.0\Engine\Build\BatchFiles\Build.bat leaningEditor Win64 Development -Project="E:\360MoveData\Users\dong\Documents\Unreal Projects\leaning\leaning.uproject" -WaitMutex -FromMsBuild”已退出,代码为 6。
1>已完成生成项目“leaning.vcxproj”的操作 - 失败。
========== 生成: 0 成功,1 失败,0 最新,0 已跳过 ==========
========== 生成 于 19:04 完成,耗时 21.544 秒 ==========
虚幻C++编译器报错
我随后去虚幻论坛和Visual的论坛上查找了这个问题,得出几种办法:
1.回滚Visual版本
Developer Community VS论坛的相关地址
但如果你用的是5.3的虚幻引擎,回滚的话就无法使用Visual Studio
2.通过下载文件来解决问题
这里附上虚幻论坛解决了这个报错的链接 Error c2440 - #2 by AnuragJainWSP - Getting Started & Setup - Epic Developer Community Forums
https://github.com/ydgros/UE_VS2022-17.9/ 这个是解决问题的文件(提问的人说这个有效)
3.可能是自己的最近改动过的代码里出了问题(编译器不会告诉是哪一行)
我是在注释部分掉没用的代码之后才去进行升级版本的,我发现报错后尝试恢复到我改动前的代码,发现可以运行,所以要注意下自己是不是错误删除一些代码。