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);
}