Unreal 4.27 升级 UDeveloperSettings unresolved external symbol

Unreal 4.27 upgrade UDeveloperSettings unresolved external symbol

我正在尝试将 Unreal 4.25.3 项目转换为 Unreal 4.27。我已经升级了我所有的插件(他们都说他们现在支持 4.27)并解决了一系列编译器错误,但我似乎无法在我的 classes.

我有一个名为 UStoreModeSettings 的 class,我在其中创建了一些新的项目设置配置变量。编译错误信息:

Severity    Code    Description Project File    Line    Suppression State
Error   MSB3073 The command "D:\dev\myVR-Unreal-4.27\Engine\Build\BatchFiles\Build.bat myVREditor Win64 DebugGame -Project="D:\dev\myVR-4.27\myVR\myVR.uproject" -WaitMutex -FromMsBuild" exited with code 6.   myVR    C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets  46  
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: virtual __cdecl UDeveloperSettings::~UDeveloperSettings(void)" (__imp_??1UDeveloperSettings@@UEAA@XZ) referenced in function "public: virtual __cdecl UStoreModeSettings::~UStoreModeSettings(void)" (??1UStoreModeSettings@@UEAA@XZ) myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.cpp.obj   1   
Error   LNK2019 unresolved external symbol "public: __cdecl UStoreModeSettings::UStoreModeSettings(class FObjectInitializer const &)" (??0UStoreModeSettings@@QEAA@AEBVFObjectInitializer@@@Z) referenced in function "public: void __cdecl UStoreModeSettings::`default constructor closure'(void)" (??_FUStoreModeSettings@@QEAAXXZ)  myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.cpp.obj   1   
Error   LNK2001 unresolved external symbol "__declspec(dllimport) public: virtual __cdecl UDeveloperSettings::~UDeveloperSettings(void)" (__imp_??1UDeveloperSettings@@UEAA@XZ) myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.gen.cpp.obj   1   
Error   LNK2001 unresolved external symbol "public: __cdecl UStoreModeSettings::UStoreModeSettings(class FObjectInitializer const &)" (??0UStoreModeSettings@@QEAA@AEBVFObjectInitializer@@@Z)  myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.gen.cpp.obj   1   
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: static class UClass * __cdecl UDeveloperSettings::StaticClass(void)" (__imp_?StaticClass@UDeveloperSettings@@SAPEAVUClass@@XZ) referenced in function "private: static class UClass * __cdecl UStoreModeSettings::GetPrivateStaticClass(void)" (?GetPrivateStaticClass@UStoreModeSettings@@CAPEAVUClass@@XZ)  myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.gen.cpp.obj   1   
Error   LNK2019 unresolved external symbol "__declspec(dllimport) public: __cdecl UDeveloperSettings::UDeveloperSettings(class FVTableHelper &)" (__imp_??0UDeveloperSettings@@QEAA@AEAVFVTableHelper@@@Z) referenced in function "public: __cdecl UStoreModeSettings::UStoreModeSettings(class FVTableHelper &)" (??0UStoreModeSettings@@QEAA@AEAVFVTableHelper@@@Z)   myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.gen.cpp.obj   1   
Error   LNK2019 unresolved external symbol "__declspec(dllimport) class UClass * __cdecl Z_Construct_UClass_UDeveloperSettings(void)" (__imp_?Z_Construct_UClass_UDeveloperSettings@@YAPEAVUClass@@XZ) referenced in function "void __cdecl `dynamic initializer for 'public: static class UObject * (__cdecl*const * const Z_Construct_UClass_UStoreModeSettings_Statics::DependentSingletons)(void)''(void)" (??__E?DependentSingletons@Z_Construct_UClass_UStoreModeSettings_Statics@@2QBQ6APEAVUObject@@XZB@@YAXXZ) myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.gen.cpp.obj   1   
Error   LNK2001 unresolved external symbol "public: virtual class FName __cdecl UDeveloperSettings::GetCategoryName(void)const " (?GetCategoryName@UDeveloperSettings@@UEBA?AVFName@@XZ)    myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.gen.cpp.obj   1   
Error   LNK2001 unresolved external symbol "public: virtual class FName __cdecl UDeveloperSettings::GetContainerName(void)const " (?GetContainerName@UDeveloperSettings@@UEBA?AVFName@@XZ)  myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.gen.cpp.obj   1   
Error   LNK2001 unresolved external symbol "public: virtual class TSharedPtr<class SWidget,0> __cdecl UDeveloperSettings::GetCustomSettingsWidget(void)const " (?GetCustomSettingsWidget@UDeveloperSettings@@UEBA?AV?$TSharedPtr@VSWidget@@[=10=]A@@@XZ)    myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.gen.cpp.obj   1   
Error   LNK2001 unresolved external symbol "public: virtual class FText __cdecl UDeveloperSettings::GetSectionDescription(void)const " (?GetSectionDescription@UDeveloperSettings@@UEBA?AVFText@@XZ)    myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.gen.cpp.obj   1   
Error   LNK2001 unresolved external symbol "public: virtual class FName __cdecl UDeveloperSettings::GetSectionName(void)const " (?GetSectionName@UDeveloperSettings@@UEBA?AVFName@@XZ)  myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.gen.cpp.obj   1   
Error   LNK2001 unresolved external symbol "public: virtual class FText __cdecl UDeveloperSettings::GetSectionText(void)const " (?GetSectionText@UDeveloperSettings@@UEBA?AVFText@@XZ)  myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.gen.cpp.obj   1   
Error   LNK2001 unresolved external symbol "public: virtual void __cdecl UDeveloperSettings::PostEditChangeProperty(struct FPropertyChangedEvent &)" (?PostEditChangeProperty@UDeveloperSettings@@UEAAXAEAUFPropertyChangedEvent@@@Z)   myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.gen.cpp.obj   1   
Error   LNK2001 unresolved external symbol "public: virtual bool __cdecl UDeveloperSettings::SupportsAutoRegistration(void)const " (?SupportsAutoRegistration@UDeveloperSettings@@UEBA_NXZ) myVR    D:\dev\myVR-4.27\myVR\Intermediate\ProjectFiles\StoreModeSettings.gen.cpp.obj   1   
Error (active)  E1696   cannot open source file "StoreModeSettings.generated.h" myVR    D:\dev\myVR-4.27\myVR\Source\myVR\StoreModeSettings.h   7   
Error (active)  E0077   this declaration has no storage class or type specifier myVR    D:\dev\myVR-4.27\myVR\Source\myVR\StoreModeSettings.h   16  
Error   LNK1120 13 unresolved externals myVR    D:\dev\myVR-4.27\myVR\Binaries\Win64\UE4Editor-myVR-Win64-DebugGame.dll 1

UStoreModeSettings.cpp:

// Fill out your copyright notice in the Description page of Project Settings.


#include "StoreModeSettings.h"

UStoreModeSettings.h:

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Engine/DeveloperSettings.h"
#include "StoreModeSettings.generated.h"


/**
 * 
 */
UCLASS(config = Game, defaultconfig, meta = (DisplayName = "Store Mode Settings"))
class MY_API UStoreModeSettings : public UDeveloperSettings
{
    GENERATED_BODY();

    UPROPERTY(config, EditAnywhere)
        FString displayName;

    UPROPERTY(config, EditAnywhere)
        int displayVersion;

    UPROPERTY(config, EditAnywhere)
        FString mapToLoad;

    UPROPERTY(config, EditAnywhere)
        FString tutorialMapToLoad;

    UPROPERTY(config, EditAnywhere)
        bool skipTutorial;

    UPROPERTY(config, EditAnywhere)
        FString roomListURL;

    UPROPERTY(config, EditAnywhere)
        FString downloadURL;

    UPROPERTY(config, EditAnywhere)
        bool downloadBaseSystemEnabled;

    UPROPERTY(config, EditAnywhere)
        FString levelsListURL;

    UPROPERTY(config, EditAnywhere, meta = (AllowedClasses = "FLinearColor"))
        FLinearColor userInterfaceStylePrimaryColor;

    UPROPERTY(config, EditAnywhere, meta = (AllowedClasses = "FLinearColor"))
        FLinearColor userInterfaceStylePrimaryContrastColor;

    UPROPERTY(config, EditAnywhere, meta = (AllowedClasses = "FLinearColor"))
        FLinearColor userInterfaceStyleSecondaryColor;

    UPROPERTY(config, EditAnywhere, meta = (AllowedClasses = "FLinearColor"))
        FLinearColor userInterfaceStyleSecondaryContrastColor;

    UPROPERTY(config, EditAnywhere, meta = (AllowedClasses = "FLinearColor"))
        FLinearColor userInterfaceStyleBackgroundColor;

    UPROPERTY(config, EditAnywhere, meta = (AllowedClasses = "FLinearColor"))
        FLinearColor userInterfaceStyleForegroundColor;

    UPROPERTY(config, EditAnywhere, meta = (AllowedClasses = "FLinearColor"))
        FLinearColor userInterfaceStyleHighlightColor;

    UPROPERTY(config, EditAnywhere, meta = (AllowedClasses = "FLinearColor"))
        FLinearColor userInterfaceStyleInactiveColor;

    UPROPERTY(config, EditAnywhere)
        bool userInterfaceStyleLevelDownloadEnabled;

    UPROPERTY(config, EditAnywhere)
        bool userInterfaceStyleScreenshotAbilityEnabled;


    UPROPERTY(config, EditAnywhere)
        int avatarStyleVRPawnIndex;

    UPROPERTY(config, EditAnywhere)
        int avatarStyleNameLabelIndex;

    UPROPERTY(config, EditAnywhere)
        TArray<FLinearColor> avatarColorList;

    //VIVOX
    UPROPERTY(config, EditAnywhere)
        FString voiceServer;
    UPROPERTY(config, EditAnywhere )
        FString voiceDomain;
    UPROPERTY(config, EditAnywhere )
        FString voiceIssuer;
    UPROPERTY(config, EditAnywhere )
        FString voiceToken;
    
    //Debug Server Settings
    UPROPERTY(config, EditAnywhere)
        bool useLocalServer;
    UPROPERTY(config, EditAnywhere)
        FString localServerUrl;

    UPROPERTY(config, EditAnywhere)
        FString multiplayerConnectURL;



public:

    FString& Settings_GetDisplayName()
    {
        return displayName;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FString& GetDisplayName() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetDisplayName();
    }

    int Settings_GetDisplayVersion()
    {
        return displayVersion;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static int GetDisplayVersion() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetDisplayVersion();
    }

    FString& Settings_GetMapToLoad()
    {
        return mapToLoad;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FString& GetMapToLoad() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetMapToLoad();
    }

    FString& Settings_GetTutorialMapToLoad()
    {
        return tutorialMapToLoad;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FString& GetTutorialMapToLoad() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetTutorialMapToLoad();
    }

    bool Settings_GetSkipTutorial()
    {
        return skipTutorial;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static bool GetSkipTutorial() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetSkipTutorial();
    }

    FString& Settings_GetRoomListURL()
    {
        return roomListURL;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FString& GetRoomListURL() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetRoomListURL();
    }

    FString& Settings_GetDownloadURL()
    {
        return downloadURL;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FString& GetDownloadURL() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetDownloadURL();
    }

    FString& Settings_GetLevelsListURL()
    {
        return levelsListURL;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FString& GetLevelsListURL() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetLevelsListURL();
    }

    bool Settings_GetDownloadBaseSystemEnabled()
    {
        return downloadBaseSystemEnabled;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static bool GetDownloadBaseSystemEnabled() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetDownloadBaseSystemEnabled();
    }

    FLinearColor Settings_GetUserInterfaceStylePrimaryColor()
    {
        return userInterfaceStylePrimaryColor;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FLinearColor GetUserInterfaceStylePrimaryColor() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetUserInterfaceStylePrimaryColor();
    }

    FLinearColor Settings_GetUserInterfaceStylePrimaryContrastColor()
    {
        return userInterfaceStylePrimaryContrastColor;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FLinearColor GetUserInterfaceStylePrimaryContrastColor() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetUserInterfaceStylePrimaryContrastColor();
    }

    FLinearColor Settings_GetUserInterfaceStyleSecondaryColor()
    {
        return userInterfaceStyleSecondaryColor;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FLinearColor GetUserInterfaceStyleSecondaryColor() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetUserInterfaceStyleSecondaryColor();
    }

    FLinearColor Settings_GetUserInterfaceStyleSecondaryContrastColor()
    {
        return userInterfaceStyleSecondaryContrastColor;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FLinearColor GetUserInterfaceStyleSecondaryContrastColor() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetUserInterfaceStyleSecondaryContrastColor();
    }

    FLinearColor Settings_GetUserInterfaceStyleBackgroundColor()
    {
        return userInterfaceStyleBackgroundColor;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FLinearColor GetUserInterfaceStyleBackgroundColor() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetUserInterfaceStyleBackgroundColor();
    }

    FLinearColor Settings_GetUserInterfaceStyleForegroundColor()
    {
        return userInterfaceStyleForegroundColor;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FLinearColor GetUserInterfaceStyleForegroundColor() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetUserInterfaceStyleForegroundColor();
    }

    FLinearColor Settings_GetUserInterfaceStyleHighlightColor()
    {
        return userInterfaceStyleHighlightColor;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FLinearColor GetUserInterfaceStyleHighlightColor() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetUserInterfaceStyleHighlightColor();
    }

    FLinearColor Settings_GetUserInterfaceStyleInactiveColor()
    {
        return userInterfaceStyleInactiveColor;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FLinearColor GetUserInterfaceStyleInactiveColor() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetUserInterfaceStyleInactiveColor();
    }

    bool Settings_GetUserInterfaceStyleLevelDownloadEnabled()
    {
        return userInterfaceStyleLevelDownloadEnabled;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static bool GetUserInterfaceStyleLevelDownloadEnabled() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetUserInterfaceStyleLevelDownloadEnabled();
    }

    bool Settings_GetUserInterfaceStyleScreenshotAbilityEnabled()
    {
        return userInterfaceStyleScreenshotAbilityEnabled;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static bool GetUserInterfaceStyleScreenshotAbilityEnabled() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetUserInterfaceStyleScreenshotAbilityEnabled();
    }

    int Settings_GetAvatarStyleVRPawnIndex()
    {
        return avatarStyleVRPawnIndex;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static int GetAvatarStyleVRPawnIndex() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetAvatarStyleVRPawnIndex();
    }

    int Settings_GetAvatarStyleNameLabelIndex()
    {
        return avatarStyleNameLabelIndex;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static int GetAvatarStyleNameLabelIndex() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetAvatarStyleNameLabelIndex();
    }

    TArray<FLinearColor> Settings_GetAvatarColorList()
    {
        return avatarColorList;
    };
    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static TArray<FLinearColor> GetAvatarColorList() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetAvatarColorList();
    }


    FString& Settings_GetVoiceServerUrl()
    {
        return voiceServer;
    };
    UFUNCTION(BlueprintCallable, Category = "Voice")
        static FString& GetVoiceServer() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetVoiceServerUrl();
    }

    FString& Settings_GetVoiceDomainUrl()
    {
        return voiceDomain;
    };
    UFUNCTION(BlueprintCallable, Category = "Voice")
        static FString& GetVoiceDomain() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetVoiceDomainUrl();
    }

    FString& Settings_GetVoiceIssuer()
    {
        return voiceIssuer;
    };
    UFUNCTION(BlueprintCallable, Category = "Voice")
        static FString& GetVoiceIssuer() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetVoiceIssuer();
    }

    FString& Settings_GetVoiceToken()
    {
        return voiceToken;
    };
    UFUNCTION(BlueprintCallable, Category = "Voice")
        static FString& GetVoiceToken() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->Settings_GetVoiceToken();
    }

    UFUNCTION(BlueprintCallable, Category = "Local Server")
        static bool GetUsingLocalServer() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->useLocalServer;
    }

    UFUNCTION(BlueprintCallable, Category = "Local Server")
        static FString& GetLocalServerUrl() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->localServerUrl;
    }

    UFUNCTION(BlueprintCallable, Category = "Store Mode")
        static FString& GetMultiplayerConnectURL() {
        UStoreModeSettings* settings = GetMutableDefault<UStoreModeSettings>();
        return settings->multiplayerConnectURL;
    }
};

我仔细阅读了 4.27 Upgrade Notes,没有发现任何似乎会影响此内容的内容。

我绝不是 C++ 或 Unreal 专家,所以我希望至少有人能为我指出正确的研究方向。

谢谢!

开发人员设置已分离到他们自己的模块中。 将此添加到您的 build.cs 文件:

PublicDependencyModuleNames.Add("DeveloperSettings");