Since DLL are made to be used in Windows, and that lots of MS DLL uses structs, I guess that ANY compiler which uses DLL can use at least the same format as the MS ones. So I don't think it's such a problem.
En réponse à Chad Austin aegis@aegisknight.org:
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