ue4 模板类实例化_关于UE4模块中模板类的问题(error LNK2019)

这几天在UE4中练习数据结构的时候遇到了一个问题,当时的场景是这样的。

应用场景在UE4中新建了一个ContainerCollection模块。

ContainerCollection模块中定义了一个FDoubleLinkList模板类(注意:模板类中的成员函数声明跟定义都要写在DoubleLinkList.h文件内)

template

class CONTAINERCOLLECTION_API FDoubleLinkList

{

/*实现*/

public:

/*其中的一个成员函数*/

int32 Append(ObjectType* Data)

{

/*实现*/

}

};在游戏主模块的Build.cs文件中正确的添加模块名。

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "ContainerCollection" });在游戏主模块的.Target.cs中正确的添加模块名。(xxxEditor.Target.cs也需要)

ExtraModuleNames.AddRange(new string[] { "ToolLibrary", "ContainerCollection" });随便在游戏主模块中的某个.h文件中定义一个C++类。我这里是在ToolLibraryGameModeBase.h中定义了一个测试类。

class TOOLLIBRARY_API FMyNode

{

public:

FMyNode(int32 _in):

value(_in)

{}

int32 value;

};我在ToolLibraryGameModeBase中声明一个FDoubleLinkList成员变量,正确引入头文件。然后再BeginPlay里调用一下Append的方法。

ToolLibraryGameModeBase.h文件

#include "CoreMinimal.h"#include "GameFramework/GameModeBase.h"#include "LinkList/DoubleLinkList.h"#include "ToolLibraryGameModeBase.generated.h"

UCLASS()

class TOOLLIBRARY_API AToolLibraryGameModeBase : public AGameModeBase

{

GENERATED_BODY()

public:

virtual void BeginPlay() override;

FDoubleLinkList listLink;

};

ToolLibraryGameModeBase.cpp文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在使用UE4开发过程,遇到LNK2019错误通常是由于链接器找不到对应的符号定义所致。这个错误通常发生在项目存在未定义的函数、类或变量,或者是由于编译器未正确编译相关件所致。 解决这个错误的方法有几种: 1. 检查代码的函数、类或变量是否正确定义。确保所有的函数、类和变量在使用之前已经被正确声明和定义,并且在需要使用的地方已经包含了相关的头件。 2. 检查编译器是否正确编译了相关的件。确保在工程属性已经正确配置了需要编译的源代码件,包括所有使用的函数和类件。 3. 检查第三方库的链接设置。如果项目使用了第三方库,需要确保项目的链接设置正确,包括库件路径和库件名称。 4. 清理和重建项目。有时候,在代码、引用或链接设置做了更改后,需要清理项目并重新构建,以确保所有修改的件都能正确链接和引用。 总之,UE4 LN2019错误是由于链接器找不到对应的符号定义所致,解决的方法包括检查代码的定义、编译器是否正确编译件、检查第三方库的链接设置,以及清理和重建项目等。 ### 回答2: LNK2019是由于链接错误导致的编译错误。UE4常见的LNK2019错误通常有以下几种情况: 1. 未正确链接库件:LNK2019错误通常指示找不到符号的定义。这可能是由于未正确链接所需的库件。确保在项目设置正确添加和链接所有必需的库件。 2. 缺少定义或实现:LNK2019错误还可能意味着缺少特定函数或类的定义或实现。请确保在相关代码包含了所有必需的定义和实现。 3. 函数签名不匹配:如果函数的声明与定义不匹配,也会导致LNK2019错误。请检查函数的参数类型、返回类型和函数名是否一致。 4. 命名空间冲突:如果在不同的命名空间定义了相同的类或函数,则会导致LNK2019错误。确保命名空间的使用是正确和一致的。 解决LNK2019错误的方法包括: 1. 检查项目设置和链接库件:确保在项目设置正确添加和链接所需的库件,并检查库件的路径是否正确。 2. 检查函数的定义和声明:确保函数的定义和声明一致,包括参数类型、返回类型和函数名。 3. 检查命名空间的使用:确保在不同的命名空间没有定义相同的类或函数。 4. 清理和重新生成解决方案:有时,编译错误可能是由于临时件或缓存问题引起的。尝试清理解决方案,并重新生成编译。 总之,LNK2019错误是由于链接错误导致的编译错误。通过检查项目设置、库件、函数定义和命名空间等方面,可以解决这种错误。 ### 回答3: LNK2019是一个由于链接错误而导致的编译错误。在使用UE4引擎的开发过程,当编译器无法找到某个函数或变量的定义时,将会引发LNK2019错误。 出现LNK2019错误常见的原因是在代码引用了某个函数或变量,但是没有正确地包含相应的头件或链接到相应的库。这可能是由于遗漏了库的链接、不正确的库版本或者库的路径设置错误等引起的。 解决LNK2019错误的方法包括以下几个步骤: 1. 检查代码是否正确包含了相关的头件。确保使用的函数或变量的声明在代码可见。 2. 检查代码是否正确链接了相关的库件。可以通过在项目的属性设置添加所需的库件路径来解决此问题。 3. 检查库件的版本是否正确。如果库件的版本与项目所需的版本不匹配,也会导致LNK2019错误。 4. 确保库件的路径设置正确。确认库件的路径是否正确设置在项目的属性设置。 5. 如果以上步骤都无效,可以尝试重新生成整个解决方案,以确保项目的所有件都得到正确的链接。 总之,LNK2019错误是由于链接错误导致的编译错误,在解决问题时需要检查代码的包含件和库件的链接设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值