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.