Because the code required for an ELF shared library to function and the
code required for a PE DLL to function are different. You need to have
the right compiler. Trying to do the conversion after the compiler has
already run is too late.
Given your problem description, why are you trying to create a DLL at
all? Why not just create an archive which can be linked directly into
the executable?
Also, RVCT definitely generates smaller code than current gcc, but I
have not heard that it generates code that runs faster. Since you
apparently only care about runtime performance, not code size, you
should consider trying arm-pe-gcc on your code to see what the
performance is. gcc is generally competitive with proprietary compilers
on performance.
Ian