The reason you want to avoid using structs in a DLL interface is because certain compilers (and options within a single compiler) let you pack DLLs in different ways. Therefore, there is no way to *guarantee* that a DLL will have a certain layout in memory. You can use #pragma pack() and all that fun stuff, but that seems kinda hack to me. :) For example, libpng has structs for the various things, but they recommend you use getters and setters to modify them.
png_set_whatever(blah, 2); // stuff like this
Well if it's already in VC++ I can work it out to make a DLL !
DLL can use structs too (the ACM uses them a LOT) !
You can also share meamory if you really need it.
But what I need is to be able to decode a MP3 data table, for the rest anything is possible/welcome.
Otherwise I was considering using the Winamp plugin ! (which already have lots usefull functions coded)