Let's say I produce a new standard API. This API consists of a bunch of C header files, but no implementation. Specific vendors are responsible for implementing my interfaces so that application developers can interact with their products. The reason for having the interface to begin with is simple: the application developer should be able to interact with different products without trouble, since all of the products implement my interface.
Ok. Now onto the hard stuff. How would a vendor who is implementing my API implement the C code? My assumption for this question is that the vendor would simply include my header files in their project and create a .DLL that "exports" their implementation functions. More importantly, how would an application developer who wants to interact with my API (but wants it to work with any implementation from any vendor) write their code to take advantage of this?
I read this SO post about dynamic vs. load time linking. It seems like load time linking is useful if you know the name of the .dll you want to link to and you know the functions you want to call in that .dll. However, in my scenario, wouldn't the application developer have to dynamically link to a .dll that implements the functions from my API? How would this application developer know what the name of the .dll is that implements the functions from my API?
I hope my confusion makes sense. I come from a background where I learned how to program in C, but we did not do much with this stuff. From my recollection, we wrote a bunch of header files and C files, then we compiled it and linked it... and it resulted in an executable with all the code in that one executable. Please help clarify my misconceptions.