[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Question about static and shared libraries and their usage in a bina
From: |
Vincent Torri |
Subject: |
Re: Question about static and shared libraries and their usage in a binary on Windows in a autotools project |
Date: |
Wed, 11 Aug 2021 02:49:24 +0200 |
On Tue, Aug 10, 2021 at 11:19 PM Nick Bowler <nbowler@draconx.ca> wrote:
>
> On 2021-08-10, Vincent Torri <vincent.torri@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.
I guess that you are talking about the import library (which could be
created with gcc on Windows). Import libraries can also be built with
Visual Studio.
> 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).
ok, so no perfect solution
> It all seems very annoying indeed. I wonder how Windows users deal with
> this.
Well, if you have a Visual Studio solution (either hand-written, or
created with a meta build-system like cmake or meson), you explicitly
write the link command.
The only solution I can see is : forcing to have only one specific
library. either static or shared, and throw an error if the wrong lib
is chosen at configure time.
And as I prefer DLL compared to static lib, I know what to do :-)
thank you
Vincent Torri
- Question about static and shared libraries and their usage in a binary on Windows in a autotools project, Vincent Torri, 2021/08/09
- Re: Question about static and shared libraries and their usage in a binary on Windows in a autotools project, Roumen Petrov, 2021/08/10
- Re: Question about static and shared libraries and their usage in a binary on Windows in a autotools project, Vincent Torri, 2021/08/10
- Re: Question about static and shared libraries and their usage in a binary on Windows in a autotools project, Nick Bowler, 2021/08/10
- Re: Question about static and shared libraries and their usage in a binary on Windows in a autotools project,
Vincent Torri <=
- Re: Question about static and shared libraries and their usage in a binary on Windows in a autotools project, Bob Friesenhahn, 2021/08/11
- Re: Question about static and shared libraries and their usage in a binary on Windows in a autotools project, Alexei Podtelezhnikov, 2021/08/11
- Re: Question about static and shared libraries and their usage in a binary on Windows in a autotools project, Bob Friesenhahn, 2021/08/11
- Re: Question about static and shared libraries and their usage in a binary on Windows in a autotools project, Vincent Torri, 2021/08/11
- Re: Question about static and shared libraries and their usage in a binary on Windows in a autotools project, Vincent Torri, 2021/08/11