Linux 4.22 -> 4.23 Migration Guide

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.