Getting an warning in the log that I need to understand a bit better

Warning is: “LogLinker:Warning: Function_548 has an inappropriate outermost, it was probably saved with a deprecated outer.”

I’m uncertain how to ascertain which function this refers to in order to troubleshoot it. I have several that I have created and used via function libraries.

I’d also like to find more details about what the warning means - I haven’t been able to find any specific info about it in any documentation.

Would you happen to be using event delegates or dispatchers? I was getting this error recently in my own project, but it vanished when I removed blueprint-assigned delegates from my blueprints. (Those “Bind Event to [DispatcherName]” nodes.)

Specifically, it helps to run the game standalone (or run the Compile Blueprint automation tests, which I believe uses the same process) while attached to a debugger, and stick a breakpoint in ULinkerLoad::VerifyImportInner where the warning gets printed (LinkerLoad.cpp line 2133 on my build, using version 4.5.0).

Once that breakpoint is hit, you can walk up the callstack a few steps to see the actual package that is causing the problem, as the compiler output alone isn’t quite enough to tell.

This screenshot is a little old as I hadn’t figured out what the problem was yet at the time I took it. You’ll want to step back to a stack frame such as ULinkerLoad::CreateLinker or GetPackageLinker, and check the value of the UPackage those functions are taking in. It’ll give you a better insight into which specific class is considered an “inappropriate outermost”.

In my case, compiler was throwing warnings when handling my player controller and one other blueprint that I used to handle camera snapping. But the actual problematic blueprints turned out to be UMG widgets. Haw.

I fixed these by removing blueprint-assigned event dispatchers from the blueprints, and calling my custom events via an interface instead. I had three widgets where this was happening and switching to interfaces fixed them all.

I know this is old but I just got one of these. It turns out Hot Reload built my blueprint incorrectly. Closing Unreal Editor, cleaning solution and rebuilding, then recompiling and resaving my blueprint fixed the problem.

Thank you for posting your solution even after all this time!