UE4开发踩坑记录

1、APawn对象旋转控制不能直接用SetActorRotation,而应该用

        APlayerController* PlayerController = UGameplayStatics::GetPlayerController(this, 0);
        if (PlayerController)
        {
            PlayerController->SetControlRotation(CurRot);
        }

否则APlayerController有时会重新将APwan的旋转角度再调整回来

2、编译出现链接错误

1>D:/UnrealEngine427/......: error C4273: “?????:?????”: dll 链接不一致
1>D:\UnrealEngine427\......: note: 参见“{ctor}”的前一个定义

可能是因为Module的导出宏出错,需要检查导出宏是否为本Module

3、Module引用错误

如果一个B Module引用了另一个A Module中的类,在头文件中#include AAA.h

AAA.h为另一个A Module的头文件,BModule编译链接一般没有问题,但是如果C Module引用B Module一般会出现AAA.generate.h找不到的错误,主要原因是C不会去找A的UBT路径

解决办法是不要在采用前置声明,然后在cpp文件中#include相应的头文件,因此在CModule中引用B Module的类作为成员变量应该定义为指针类型,而非直接定位为对象或结构体。

3、使用模板类跨Module调用,链接出现 error LNK2019: 无法解析的外部符号

原因在于模板类和模板函数在使用的时候才会被实例化。当模板被使用时,编译器需要函数所有的实现代码,来用合适的类型(模板参数)去构建正确的函数。但是如果将函数实现在单独的源文件中,这些文件是不可见的,因而会出错。

解决方案:

1、把类模板中成员函数的声明和定义都放在类的定义中(.h文件),不要分开就行。
2、在主文件(main文件)中既包含类模板的声明文件(接口文件)(.h文件),同时也包含类模板的实现文件(.cpp文件)就行了。

3、在类的定义中(.h文件)的最后包含类模板的实现文件(.cpp文件)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山中涛大爷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值