were you looking at a "release" build binary, or are those symbol names really the mangled 'decorated' names where the functions aren't exported as C calling convertion properly? Using the
Dependency Walker tool will whether show if the exports from what you're calling are decorated correctly by putting C and C++ next to the exports.
Usually you received and have to pass a 'context' back into a C export and in the entry point in the DLL dereference it to call into the class, is that what you mean?
The other alternative is for the DLL itself to have a global static for the class to the C function doesn't have to, but it still requires an extra "jump" inside the DLL to get back in to the context of the class.
Not sure about anything calling C++ directly, but every language under the sun I've every encountered has some way to call
either stdcall or pascal style exports from API DLLs.
I'm a C/C++ programmer, have been since the mid 90s and on n off I've used prettty much every language out there. (Including porting stuff to salford fortran under clearwin). I also do some objective-c for os x and ios these days, its nice but has the potential for even more messy/confusing than mfc/c++ really nice language in some respects though.
Everything system level, on every O/S under the sun is written in C or C++, this is because its low level, real unmanaged code. A lot of C++ code that isn't extending functionality or using C++ objects that are OO just group and tidy code in and isn't fully OO anyway.
Whats my language of choice for my demo projects?
C For anything else like GUI or things without such a time critical nature I might use C++, but for real-time stuff, C all the way.
No messing around, no garbage collection, what you code is what you get.
Data structures which are designed properly don't need C++ wrappers, and because of that I'm seeing endless possibilities for optimisation that I simply wouldn't notice with OO design, my structs and lists (self) organising my data are my objects.
However, the golden rule of optimisation should not be broken. DO IT ONLY WHEN NECESSARY. I've been using the free
Very Sleepy CPU profiler and the gDEBugger tool (also free from AMD or the original dev's) for profiling OpenGL to find out where any bottlenecks are.