ROSIntegration icon indicating copy to clipboard operation
ROSIntegration copied to clipboard

Plugin not building on UE5.5 (Windows 11)

Open andreschreiber opened this issue 11 months ago • 2 comments

I am trying to build the plugin using Unreal Engine 5.5 on Windows 11 in Visual Studio (2022). However, whenever I try to build the project, I get a large number of errors: image

Are these errors known issues, or am I doing something wrong with the build process? I had some other errors originally (e.g., cerr and cout generating errors, which were fixed with #include<iostream> and the use of assert causing errors due to lack of #include <cassert>).

andreschreiber avatar Dec 24 '24 02:12 andreschreiber

I think it would be good to get the plugin working with latest UE.

I haven't tried building it myself yet, but I had a quick look at the errors in your screenshot.

use of undefined type 'Umpl::Impl'

I'm a bit surprised that the plugin builds even for UE4. It seems both Service.cpp and Topic.cpp use calls like Ric->_Implementation->Get()->GetBridge(). However, looking at ROSIntegrationCore.h I can see that _Implementation is a private member (which it should be because of the pimpl idiom). So how can service and topic access the private _Implementation directly like that? Also, GetBridge() is part of Umpl::Impl which is completely defined and implemented within the source file ROSIntegrationCore.cpp, so trying to use it should give an error. Hmm...

'ROSInstance': undeclared identifier

It seems that Topic.h doesn't include ROSIntegrationGameInstance.h.

Float32, Int32, Int64, Twist is not a member of ...

Again, it seems like the converter headers for Float32, Int32, Int64, and Twist are not included from Topic.cpp (while other converters like String and Bool are included, and therefore not giving an error). So adding #include "Conversion/Messages/std_msgs/StdMsgsFloat32Converter.h" etc might solve it.

PetterVMC avatar Jun 03 '25 01:06 PetterVMC

For the UImpl::Impl issue - LLM suggested moving the implementation class UImpl::Impl to a separate ROSIntegrationCore_Impl.h file under Private. Then include ROSIntegrationCore_Impl.h in the private cpp files that needs its implementation. Worked for me on Ubuntu 22 with Unreal 5.6 to have the plugin built at least.

hyfan1116 avatar Jun 18 '25 21:06 hyfan1116