I build a library say A with mingw  and then another library B which depends on libA. Now libA has been sucessful in building with mingw. It has proper dllexport and dllimport symbols defined. and class uses it

class EXPORT_OF_A classOfA {


so far so good.

Now when building libB with same mingw toolchain. I dont need to use EXPORT defines. This seems to me a bit strange. I could build my dll linked with libA and no issue. But when building an exe on top of dlls from libB I want to proper export. This part seems fair. 

I dont understand why dllexport/dllimport macro is not required to build dll which are linked with a dll having classes properly exported?

Is it by design or am I missing something very important. Could anyone explain this to me.?

So far I had read: