GNU ld looks for a number of other patterns than just lib<name>.dll.a and lib<name>.a.
GNU ld does support linking directly against a DLL without using an import library. If that's the only match for a -l argument, point out that the user needs to use an import library, instead of leaving the user with a puzzling message about the -l argument not being found at all.
Also convert an existing case of fatal() into error().
It should be error instead of fatal, as our promise is that we use fatal only to report corrupted files.