Search code examples
c++dlldllimportdllexport

DUMPBIN utility mangled name output


I am using DUMPBIN utility for getting mangled name from a c++ dll to use in a c# application . I am exposing a c++ class member function using __declspec(dllexport) and the output mangled name result is the folowing

?InitPort@CProtocolStack@@QAEEHEPAEKE@Z = ?InitPort@CProtocolStack@@QAEEHEPAEKE@Z (public: unsigned char __thiscall CProtocolStack::InitPort(int,unsigned char,unsigned char *,unsigned long,unsigned char))

Do I need to use the whole name in C# application while importing the same function ? If not, which part will be sufficient for importing?


Solution

  • You just need this bit:

    ?InitPort@CProtocolStack@@QAEEHEPAEKE@Z
    

    Then you declare it something like:

    [DllImport("your.dll",
        EntryPoint = "?InitPort@CProtocolStack@@QAEEHEPAEKE@Z",
        ExactSpelling = true)]
    static extern byte CProtocolStack::InitPort( /* etc. */);