.so and .dll files must properly export all public objects, because you can dynamically link against them.
Why is it that you cannot currently statically link against .so and .dll files? Are they missing some information required by the linking process, or has the ld code for it just not been written?