ROSIntegration
ROSIntegration copied to clipboard
Plugin not building on UE5.5 (Windows 11)
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:
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>).
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.
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.