title: Avoid name mangling on a shared object C interface under linux
body: <p>Under windows we have a C interface (extern "C" { // interface }) to our C++ library, that exports unmangled functions using a module definition file (.def).</p>
  
  <p>I am trying to recreate the same thing under linux, where I am relatively inexperienced. I understand that under NIX systems, all functions are exported by default. With this in mind I created a shared object, which I ran through the nm command.</p>
  
  <p>I was surprised to see that, unlike in windows, my function names had been mangled!</p>
  
  <p>How can I prevent this please?</p>