Hi All,
OK, after further research I have stumbled on the answer:
As well as adding the GEANY_API_SYMBOL macro to the function definition, the function declaration in keybindings.h also needs to be moved from the #ifdef GEANY_PRIVATE section, into the 'public' section. Dereffing the returned pointer then works fine.
I expect this is documented somewhere, though I haven't found it. Thanks to all for not responding with 'RTFM'. :)
Cheers, Austin.