DLL function names using dumpbin.exe

This is called name-mangling and happens when you compile C++ with a C++-compiler. In order to retain the "humand-readable" names you'll have to use extern "C" when declaring and defining your classes and your functions. i.e.

extern "C" void myFunction(int, int); 

See here and also google mixing C and C++.


You need to pull those static member functions into the global address space and then wrap them with extern "C". This will suppress the C++ name mangling and instead give you C name mangling which is less ugly:

extern "C" __declspec(dllexport) Initialize(double a, double b)
{
    codec::Initialize(a, b);
}

and then remove the __declspec(dllexport) on your static member functions:

class codec
{
    public:
        static double Initialize(double a, double b);
}