I don't think you'll ever be able to get away from having to use/know C.
Practically speaking, I think the best you can do would be to generate a template based on your second suggestion, passing a list of exported functions. Done right, it could generate quite a bit of 'boilerplate' code, but you would still need to implement the actual functionality.
Or try your hand at creating an interface for SWIG.
AIR.