Basically, if the Hello.pm shared object exports the say_hello() function, then all works fine. Otherwise you get the failure you reported.
There's an (documented) EU::MM parameter called FUNCLIST that's helpful here, but it hasn't been made available to Inline::C - so I think that, wrt Inline::C, you're snookered. (Though, having said that, someone may well come up with a different solution.)
However, if you convert Hello.pm to a normal XS module, and provide WriteMakefile() in its Makefile.PL with:
FUNCLIST => ['boot_Hello','say_hello'],
then all should work fine. At least it does for me, on Win32.
However, as I understand it, you don't control the real world equivalent of "Hello.pm". Does that, in itself, pose a problem ?
Cheers,
Rob
Update: Inserted
boot_Hello into the FUNCLIST arg. (It's also needed, I believe.)
Update 2:The Inline::C script also then needs to link to the Hello shared object or it's import lib. (Things aren't being quite as simple as I recall ... it's looking more and more kludgy by the minute :-)