It actually doesn't prefix all symbol names as such! The underscore prefix indicates the cdecl calling convention specifically; other calling conventions have their own name mangling schemes.
Edit: I had a nagging feeling that I was forgetting something, and I was. This is only a Windows convention, not a more universal thing.
Edit: I had a nagging feeling that I was forgetting something, and I was. This is only a Windows convention, not a more universal thing.