Running into some troubles migrating a C+±heavy project from 4.22 → 4.23 on Linux. I hope this thread can serve as a place to find solutions to some of the problems. I’ll be updating it as I go through migrating my own project and finding the solutions.
Module symbol exports are hidden by default
In 4.22, you could have a header file for a regular class in your module’s Public/ folder, and another module that includes the first module in its PublicDependencyModuleNames could use it, no problem. This is no longer the case, and non-decorated class declarations will not be exported. Any class that you want exported must include your <MODULENAME>_API macro in between “class” and your class name. For example:
In 4.22:
class EventThing {
...
In 4.23
class MYMODULE_API EventThing {
...
Now the linker will be able to find your objects like before.