[FFmpeg-devel] Fix mingw name of .lib files

Måns Rullgård mans
Tue Mar 4 21:32:32 CET 2008

Gonzalo Garramu?o <ggarra at advancedsl.com.ar> writes:

> M?ns Rullg?rd wrote:
>>> instead of the, imo, broken:
>>> /usr/local/bin/avutil-52.dll
>>> /usr/local/bin/avutil.lib
>> This is intentional.  With your proposal, users of the libs will have to
>> know which version to link to, and change their makefiles whenever the
>> version number changes.
> No, it is the other way around.  The problem *now* is that you need to 
> know what to link against.  The avutil.lib name does not change, but the 
> name of the DLL to link against does, regardless of how avutil is named. 
> (ie. when linking against a shared ffmpeg - static linking is no issue 
> of course),
> The executable does not link against avutil.dll, but to a specific 
> version, like avutil-52.dll.
> This means that distribution of the executable becomes a pain, as you 
> really cannot tell which DLL to distribute easily from a makefile.  You 
> have to actually analyze the resulting .exe and make sure the DLL is in 
> the path (a royal pain).

Linking the application against a versioned dll makes it possible to
have several versions of the dll installed, which might be required if
apps require different versions.  Linking against a non-versioned dll
makes this impossible, and this situation is known as "dll hell".

> If you want to have users not worry about versioning at all on windows 
> (a bad idea if you ask me, but I'll go along with it), then both the 

Oh, you *want* to worry?  Why didn't you say so sooner?  I'm sure we
can think of ways to make your life really painful.

> .lib file and the .dll should not be versioned.  Or a symlink (a copy on 
> windows really) should be made on install.
> Having one versioned but not the other is really what makes it a royal pain.
> Personally, I strongly disagree about not versioning stuff, as it makes 
> harder to know why something is broken.  And if you are using a 
> mingw/msys only system, it goes against the grain of Unix, which is a 
> no-no in my book.
> Also, using ffmpeg normally, you really do not have to worry about 
> versioning as the Makefile takes care of it.

Yes, the FFmpeg makefiles always link against the libraries that were
just built.  How would changing the names make any user-visible
difference here?

M?ns Rullg?rd
mans at mansr.com

More information about the ffmpeg-devel mailing list