assemblies of that sort are an attribute of the .net framework.. as is the GetTypes method. if you want to access the native binary from managed code.. you have to export the symbol when you're compiling the dll and import the symbol in your c# application (along with marshalling and unmarshalling the types).
// in exp.c
extern "C" void __declspec(dllexport) get_message(char *);
// in imp.cs
[DllImport(__DLL_NAME__[, CharSet=__CHARSET__[, EntryPoint=__SYMBOLNAME__[, CallingConvention=__CALLCONV__]]])]
extern void get_message([In, Out] String);