UE4 SlateWidget创建C++文件hot reload失败问题

[复制链接]
查看5063 | 回复10 | 2019-9-7 18:40:23 | 显示全部楼层 |阅读模式
UE4 SlateWidget创建C++文件hot reload失败,并且重新打开VS进行编译的时候报错,需要怎么解决,反正这个有时候会出现这样的错误,有时又不会,今天就一直出错搞不定
111.jpg 222.jpg


补充内容 (2019-9-23 10:14):
问题暂时解决了,报错不管,这个时候文件已经创建好了,关引擎,去到vs中,在所创建的头文件中加上这个头文件:#include "DeclarativeSyntaxSupport.h"
rrfetch | 2019-9-7 19:53:34 | 显示全部楼层
为啥专门把红色的错误提示模糊掉
回复 支持 反对

使用道具 举报

dubaiworld | 2019-9-7 22:02:29 | 显示全部楼层
333.jpg
回复 支持 反对

使用道具 举报

dubaiworld | 2019-9-7 22:03:09 | 显示全部楼层
rrfetch 发表于 2019-9-7 19:53
为啥专门把红色的错误提示模糊掉

看2楼ERROR
回复 支持 反对

使用道具 举报

rrfetch | 2019-9-7 23:28:03 | 显示全部楼层
按提示是说你的 SSlAiRayInfoWidget.h 的第 15 行缺少 int。感觉你这是基本的 C++ 语法错误。
建议你把 SSlAiRayInfoWidget.h 和 SSlAiRayInfoWidget.cpp 贴上来,这样

  1. #include "Engine.h"
  2. int GetErrorCode()
  3. {
  4.      return 6;
  5. }
复制代码
回复 支持 反对

使用道具 举报

dubaiworld | 2019-9-8 11:57:33 | 显示全部楼层
.h文件
[mw_shl_code=applescript,true]// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Widgets/SCompoundWidget.h"

/**
*
*/
class SLAICOURSE_API SSlAiRayInfoWidget : public SCompoundWidget
{
public:
        SLATE_BEGIN_ARGS(SSlAiRayInfoWidget)
        {}
        SLATE_END_ARGS()

        /** Constructs this widget with InArgs */
        void Construct(const FArguments& InArgs);
};
[/mw_shl_code]

.cpp文件
[mw_shl_code=cpp,true]// Fill out your copyright notice in the Description page of Project Settings.

#include "SSlAiRayInfoWidget.h"
#include "SlateOptMacros.h"


BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void SSlAiRayInfoWidget::Construct(const FArguments& InArgs)
{
       
        /*
        ChildSlot
        [
               
        ];
        */
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
[/mw_shl_code]
回复 支持 反对

使用道具 举报

dubaiworld | 2019-9-8 11:59:13 | 显示全部楼层
rrfetch 发表于 2019-9-7 23:28
按提示是说你的 SSlAiRayInfoWidget.h 的第 15 行缺少 int。感觉你这是基本的 C++ 语法错误。
建议你把 SSl ...

已经贴出来了,但是我对比过之前创建的文件,一样的,但是这个创建的就是报错
回复 支持 反对

使用道具 举报

rrfetch | 2019-9-8 19:06:00 | 显示全部楼层
感觉 SLATE_BEGIN_ARGS 和 SLATE_END_ARGS 展开出错了。在我的 4.21 版本里,是 Engine.h 里才有这个 macro 的。
你试一下把  #include "CoreMinimal.h" 改为 #include "Engine.h" 看看。

再就是 Build.cs 里的 Slate 和 SlateCore 模块要确认加上了
PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
回复 支持 反对

使用道具 举报

rrfetch | 2019-9-13 14:59:18 | 显示全部楼层
说老实话,这种问完了就没消息了,也不知道最后是成功解决了问题,还是失败了的情况,是最打击回答的人的。
一个人花时间和精力来回答,肯定希望,如果以后如果有人碰到同样的问题,搜到这里,那么他也能知道怎么解决。
现在除了提问的,其它人完全不知道结果(我也不知道,反正在我电脑上一切 OK),是不是应该花时间尝试一下。
完全白费劲
回复 支持 反对

使用道具 举报

rrfetch | 2019-9-13 15:04:04 | 显示全部楼层
我以前推崇《提问的智慧》,本论坛也有 https://www.engineworld.cn/thread-1584-1-1.html,但后来看多了,发现这就是个悖论:
会仔细读《提问的智慧》的人,也是那种会仔细读文档和代码的人,他本来就很少需要提问,大多数问题其实文档上写的清清楚楚。
那些提问的人,一般他也不会读什么《提问的智慧》... ...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

13

主题

257

回帖

1263

积分

中阶编码师

积分
1263