UE4 無法include “filename.generated.h”


在做plugin的時候要添加功能代碼,添加的類無法編譯通過。提示需要包含.generated.h 但是編譯不通過又沒有這個文件。

這就尷尬了。

下面提供最簡單的配置,通過復制下面代碼。編譯通過后再自行擴建

 

代碼結構如下:紅框內是我需要新增的一個類 ImageLoaderComponent

 

 

ImageLoaderPrivatePCH.h

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.



// You should place include statements to your module's private header files here.  You only need to
// add includes for headers that are used in most of your module's source files though.
// 

#include "CoreUObject.h"
#include "Engine.h"
#include "ImageLoader.h"    //你自己模塊的.h文件

內部公共頭文件需要引用 Engine 和 Uobject , 還有你自己模塊的模塊頭文件

 

 

ImageLoaderComponent.h

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.

#pragma once
#include "ImageLoaderComponent.generated.h"

/************************************************************************/
/*  你自己的類                                                           */
/************************************************************************/

UCLASS()
class UImageLoaderComponent : public UObject
{
    GENERATED_UCLASS_BODY()


};

新建的類需要引用 filename.generated.h ,因為可能涉及到引擎模塊庫的調用,所以需要用generated做熱部署相關的工作(猜的)

以后頭文件的引用列表不需要擴展,擴展的時候放到PCH文件里,譬如引用了其他庫,或者其他引擎功能,在PCH中添加引用,並於Build.cs中添加關聯

 

ImageLoaderComponent.cpp

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.


#include "ImageLoaderPrivatePCH.h"
#include "ImageLoaderComponent.h"

/************************************************************************/
/*  你自己的類實現(構造函數)                                              */
/************************************************************************/

UImageLoaderComponent::UImageLoaderComponent(const FObjectInitializer& ObjectInitializer)
    : Super(ObjectInitializer)
{
    
}

實現文件當然引用 PCH 以及這個類的聲明文件。

使用過程中除了PCH引用了的庫外,內部使用過程中用到的.h寫在當前cpp這里,防止文件污染。

 

然后編譯通過后就可以歡快地使用UE了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM