On 2021-08-10, Vincent Torri <vincent.to...@gmail.com> wrote: [...] > As I have said, the problem is not the lib itself. There is no problem > with the lib. The problem is with the binary : when I compile it, > there is no way to know if the library, that the binary uses, is a > static library or shared library (know == having a macro to > distinguish shared lib and static lib)
I'm not too familiar with shared libraries on Windows, but I think mingw solves this particular problem by generating static wrapper libs with stub functions that then call the real implementation in the dll. With such a wrapper, I suppose there is no difference (from the program's perspective) between linking against the real static archive versus linking against the wrapper. When using mingw and libtool simple libraries appear to "just work" at least. Without such a wrapper I suppose you will need to know at compile time which libraries will be used in the future at link time. I don't think libtool can make any assumptions here in general, as link options are not typically passed to compile mode commands (and in fact, many libtool options are overloaded to mean different things depending on whether you are running it in compile or link mode). It all seems very annoying indeed. I wonder how Windows users deal with this. Cheers, Nick