So yes, the correct includes were in place to pull in the declaration of that function. The definition is in the *.C file which isn’t included. Loading it makes the definition visible.
You can always create a single *.C file which includes every other *.C file you care about. Alternatively creating a shared library is a proper solution and expecting CINT to magically know declarations of your functions is asking a little too much from it.