JaydenMaalouf / JoystickPlugin

Native Input Joystick Plugin for Unreal Engine 4/5
MIT License
30 stars 6 forks source link

Linker Error when upgrading to 5.3 #50

Closed VitorOI closed 7 months ago

VitorOI commented 11 months ago

I was attempting to upgrade my project to UE5.3, and I noticed several linker errors.

This happens on the JoystickLogManager and it is because the template functions there are implemented in CPP and not in the header file. By moving them all there, the errors disappear

MNS26 commented 11 months ago

I just ran into this issue as well, do you have a diff of the files changed by chance? All the template functions are in the header from what i can tell image

MNS26 commented 11 months ago

i was using this plugin since its the only one i got reliably working with non-standard HID devices (looks over at the HOTAS)

VitorOI commented 11 months ago

I just ran into this issue as well, do you have a diff of the files changed by chance? All the template functions are in the header from what i can tell image

I don't have a diff but here's what I have on both files:

CPP File: image

Header File:

image

image

You just need to move the template functions' implementation to the Header File. The implementation is done outside of the class scope but could be done inside

MNS26 commented 11 months ago

hmm for some reason even after that it doesnt want to be opened with the plugin in the folder, w/o it it loads fine though.

VitorOI commented 11 months ago

are you forcing the change to UE5.3 on the .uplugin file?

MNS26 commented 11 months ago

I get the message the following modules need to be rebuilt when opening the project image

MNS26 commented 11 months ago

are you forcing the change to UE5.3 on the .uplugin file?

you mean update the project to UE5.3.1?

the project itself was 5.3.1 already

VitorOI commented 11 months ago

are you forcing the change to UE5.3 on the .uplugin file?

you mean update UE5.3.1?

the project itself was 5.3.1 already

But the .uplugin might not be.

Make sure the "EngineVersion" is set to "5.3.0" or "5.3.1" on the .JoystickPlugin.uplugin file

MNS26 commented 11 months ago

i dont see a engine version in the uplugin file

{
  "FileVersion": 3,
  "Version": 1,
  "VersionName": "1.0.0",
  "FriendlyName": "Joystick Plugin",
  "Description": "Unreal Engine Plugin to add Joystick Controllers as Input Devices (with Force Feedback support)",
  "Category": "Input Devices",
  "CreatedBy": "Jayden Maalouf",
  "CreatedByURL": "https://github.com/JaydenMaalouf/JoystickPlugin",
  "DocsURL": "https://github.com/JaydenMaalouf/JoystickPlugin/wiki",
  "MarketplaceURL": "",
  "SupportURL": "https://github.com/JaydenMaalouf/JoystickPlugin/issues",
  "CanContainContent": false,
  "IsBetaVersion": false,
  "IsExperimentalVersion": false,
  "Installed": false,
  "Modules": [
    {
      "Name": "JoystickPlugin",
      "Type": "Runtime",
      "LoadingPhase": "PostConfigInit",
      "WhitelistPlatforms": [
        "Win64",
        "Linux"
      ]
    },
    {
      "Name": "JoystickPluginEditor",
      "Type": "Editor",
      "LoadingPhase": "PostEngineInit",
      "AdditionalDependencies": [
        "Engine"
      ]
    }
  ]
}
VitorOI commented 11 months ago

image

Mine looks like this. add the "EngineVersion" section like on the image. then delete Binaries and Intermediates, Generate Project Files and try to compile and run

MNS26 commented 11 months ago

oh interesting... wonder if its the differences between OS

MNS26 commented 11 months ago

yup that worked

MNS26 commented 11 months ago

hmm wonder if that can be left as 0.0.0 as a "does not matter" option

MNS26 commented 11 months ago

yup 0.0.0 worked lol

EDIT: nvm adding the EngineVersion line now makes it not appear at all

VitorOI commented 11 months ago

yup 0.0.0 worked lol

EDIT: nvm adding the EngineVersion line now makes it not appear at all

Adding with 5.3.0 or 0.0.0?

MNS26 commented 11 months ago

at all

MNS26 commented 11 months ago

"EngineVersion": 5.3.1 nothing image

MNS26 commented 11 months ago

trying to rebuild the C++ files resulted in a error image

VitorOI commented 11 months ago

Ah, I see the issue.

"EngineVersion": "5.3.0",

You need the air quotes around the number

MNS26 commented 11 months ago

🤦🏻 fucked up the .uplugin file...

the number needs to be inside ""

MNS26 commented 11 months ago

just as i pressed comment

MNS26 commented 11 months ago

AYYY

MNS26 commented 11 months ago

wow i didnt know UE could list plugins in real time

MNS26 commented 11 months ago

🤞🏻 image

MNS26 commented 11 months ago

uhhh UE5 you ok in there!? image

MNS26 commented 11 months ago

fuck didnt work

MNS26 commented 11 months ago

last time i had this there were other things not correct with the linux version too

MNS26 commented 11 months ago

ill try the zip from the downloads

VitorOI commented 11 months ago

I'm working on Windows, so can't really help much on the Linux side. However, I did notice your version is 1.0.0, while I am using 3.0.0. Try to update to the most recent version

MNS26 commented 11 months ago

i pulled it from github and for some reason i the version numbers dont work... even the epic games ones show 1.0 or 1.0.0

MNS26 commented 11 months ago

well zip also not working

MNS26 commented 11 months ago

ill make a separate issue for the linux one since its not just the functions

MNS26 commented 11 months ago

thx for the help btw

VitorOI commented 11 months ago

Linux stuff is off my knowledges, but glad I could help with the other issues.

Just hope the linker errors are quickly fixed on an official release

MNS26 commented 11 months ago

well i got some more info at least

Building Project_1x1Editor...
Determining max actions to execute in parallel (12 physical cores, 12 logical cores)
  Executing up to 12 processes, one per physical core
------ Building 7 action(s) started ------
[1/7] Compile Module.JoystickPluginEditor.cpp
In file included from /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPluginEditor/Module.JoystickPluginEditor.cpp:2:
In file included from /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPluginEditor/Private/Customization/JoystickInstanceIdCustomization.cpp:1:
/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPluginEditor/Public/Customization/JoystickInstanceIdCustomization.h:7:10: fatal error: 'PropertyEditor/Public/IPropertyTypeCustomization.h' file not found
#include "PropertyEditor/Public/IPropertyTypeCustomization.h"
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[2/7] Compile Module.JoystickPlugin.1.cpp
[3/7] Compile Module.JoystickPlugin.3.cpp
[4/7] Compile Module.JoystickPlugin.2.cpp
[5/7] Link (lld) libUnrealEditor-JoystickPlugin.so
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [19]>(char16_t const (&) [19])
>>> referenced by JoystickSubsystem.cpp:39 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:39)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::Initialize(FSubsystemCollectionBase&))
>>> referenced by JoystickSubsystem.cpp:43 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:43)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::Initialize(FSubsystemCollectionBase&))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [32]>(char16_t const (&) [32])
>>> referenced by JoystickSubsystem.cpp:48 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:48)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::Initialize(FSubsystemCollectionBase&))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [18]>(char16_t const (&) [18])
>>> referenced by JoystickSubsystem.cpp:65 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:65)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::Deinitialize())
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [29], FJoystickInstanceId>(char16_t const (&) [29], FJoystickInstanceId)
>>> referenced by JoystickSubsystem.cpp:462 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:462)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::RemoveDevice(FJoystickInstanceId const&))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [31], FJoystickInstanceId>(char16_t const (&) [31], FJoystickInstanceId)
>>> referenced by JoystickSubsystem.cpp:468 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:468)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::RemoveDevice(FJoystickInstanceId const&))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogInformation<char16_t [18], FJoystickInstanceId>(char16_t const (&) [18], FJoystickInstanceId)
>>> referenced by JoystickSubsystem.cpp:474 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:474)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::RemoveDevice(FJoystickInstanceId const&))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogError<char16_t [24], char16_t const*>(char16_t const (&) [24], char16_t const*)
>>> referenced by JoystickSubsystem.cpp:342 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:342)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [4], char16_t const*>(char16_t const (&) [4], char16_t const*)
>>> referenced by JoystickSubsystem.cpp:380 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:380)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [22], int>(char16_t const (&) [22], int)
>>> referenced by JoystickSubsystem.cpp:381 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:381)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
>>> referenced by JoystickSubsystem.cpp:393 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:393)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [13], int>(char16_t const (&) [13], int)
>>> referenced by JoystickSubsystem.cpp:382 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:382)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [16], char16_t const*>(char16_t const (&) [16], char16_t const*)
>>> referenced by JoystickSubsystem.cpp:383 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:383)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
>>> referenced by JoystickSubsystem.cpp:386 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:386)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [21], int>(char16_t const (&) [21], int)
>>> referenced by JoystickSubsystem.cpp:384 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:384)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [15], int>(char16_t const (&) [15], int)
>>> referenced by JoystickSubsystem.cpp:385 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:385)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [20], char16_t const*>(char16_t const (&) [20], char16_t const*)
>>> referenced by JoystickSubsystem.cpp:387 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:387)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
>>> referenced by JoystickSubsystem.cpp:388 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:388)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [10], EJoystickType>(char16_t const (&) [10], EJoystickType)
>>> referenced by JoystickSubsystem.cpp:389 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:389)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [17], EJoystickPowerLevel>(char16_t const (&) [17], EJoystickPowerLevel)
>>> referenced by JoystickSubsystem.cpp:390 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:390)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [19], int>(char16_t const (&) [19], int)
>>> referenced by JoystickSubsystem.cpp:391 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:391)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
>>> referenced by JoystickSubsystem.cpp:394 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:394)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [20], int>(char16_t const (&) [20], int)
>>> referenced by JoystickSubsystem.cpp:392 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:392)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [56], char16_t const*, int>(char16_t const (&) [56], char16_t const*, int)
>>> referenced by JoystickSubsystem.cpp:400 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:400)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: undefined symbol: void FJoystickLogManager::LogDebug<char16_t [30], char16_t const*, int>(char16_t const (&) [30], char16_t const*, int)
>>> referenced by JoystickSubsystem.cpp:406 (/mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Source/JoystickPlugin/Private/JoystickSubsystem.cpp:406)
>>>               /mnt/data/Projects/Project_1x1/Plugins/JoystickPlugin/Intermediate/Build/Linux/x64/UnrealEditor/Development/JoystickPlugin/Module.JoystickPlugin.3.cpp.o:(UJoystickSubsystem::AddDevice(int))
ld.lld: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
Total time in Parallel executor: 3.09 seconds
Total execution time: 6.19 seconds
make: *** [Makefile:85: Project_1x1Editor] Error 6
/mnt/data/Projects/Project_1x1 main* 6s ❯               
MNS26 commented 11 months ago

but.. ill be flooding the other issue now 😄

JaydenMaalouf commented 10 months ago

I'll hopefully have a fix for this shortly. Apologies for the delay!

JaydenMaalouf commented 10 months ago

I haven't compiled the plugin as it will take me a bit to setup my build server for 5.3 but you should be able to test the changes from #46 That should fix the build issues for 5.3.x Let me know if it works for you :)

MNS26 commented 10 months ago

No problem at all. This is only for use with non standard controllers (who in the world wants 9 axis, 80 buttons, 4 Dpads anyway 🤣)

On Thu, Oct 26, 2023, 11:03 AM Jayden Maalouf @.***> wrote:

I'll hopefully have a fix for this shortly. Apologies for the delay!

— Reply to this email directly, view it on GitHub https://github.com/JaydenMaalouf/JoystickPlugin/issues/50#issuecomment-1780706941, or unsubscribe https://github.com/notifications/unsubscribe-auth/AM27GBCYG2C753QIGVEA3ZLYBIRPNAVCNFSM6AAAAAA6FQGBPWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOBQG4YDMOJUGE . You are receiving this because you commented.Message ID: @.***>

JaydenMaalouf commented 10 months ago

I have released 3.2.0-rc.10 which has fixed the build issues with 5.3

Full release will come out once I merged the fix to master

JaydenMaalouf commented 7 months ago

It's been some time but we got there in the end - I have released 3.3.0 Please feel free to raise another issue if you happen to find something!