I began to think 'Why even bother with Libraries when the .dll already has the functions built into them?'
....
So, import libs are not going away. But the ability to replace true import libs with a simple symbolic link to (or a copy of) a dll, in most cases, is a useful addition to the suite of tools binutils makes available to the win32 developer. Given the massive improvements in memory requirements during linking, storage requirements, and linking speed, we expect that many developers will soon begin to use this feature whenever possible...
I don't use import libraries anymore, and for a few years have only linked with .dll files.
I've done this with ld, when used directly (I found some problems using ld via gcc), and also briefly used GoLink. But GoLink has some strange problems (for example, the handling of imported dll function names as data - for use as function pointers - is rather peculiar). While ld on Windows 10 seems to be unstable when used directly, but is OK via gcc (but which then doesn't like dll files...).
Now I use my own linker (actually, I have a product that is a combined assembler/linker, with multiple .asm [my syntax] as input, and .exe as output). And that relies on using dll files to use import libraries. It can't use external .a, .o. .obj or .lib files.
Any dll files and functions used find their way as imported libraries into the .exe file (there is no static linking).
At the moment this system seems to work fine. I'm not sure why linkers have always been perceived as complicated programs (and I first used them in the 1970s), or why they need def and lib files, as the task they perform is straightforward.