> On Nov 5, 2025, at 02:15, Kacper Michajłow via ffmpeg-devel 
> <[email protected]> wrote:
> 
> PR #20837 opened by Kacper Michajłow (kasper93)
> URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20837
> Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20837.patch
> 
> In MSVC builds, object files built for shared or static libraries are
> technically not compatible with each other.

Any reference? I don’t understand how does link static libraries work
when object files not compatible. Is it related to av_export_avutil?

> That's why building both
> shared and static libraries simultaneously is not allowed in configure.
> 
> However, for test programs, we still build internal static libraries
> that allow the test programs to access internal symbols.
> 
> In commit 8eca3fa619a7fb2190a3d4203e01a0d2661e7f91, I assumed that when
> CONFIG_STATIC=0, we would never build a static library. We actually do
> build one for internal purposes, ensuring that the objects are
> "compatible", mostly by avoiding dllimport/dllexport attributes.
> 
> Such libraries are never installed and are used only for test programs.
> This change adds a -static suffix to these internal libraries to avoid
> name conflicts. In the MSVC world, static libraries and import libraries
> are generally the same thing and share the same naming conventions.
> 
> Fixes: 8eca3fa619a7fb2190a3d4203e01a0d2661e7f91
> 
> 
> From cd4a87fa07e22cdd1e7ea55743e9e4921c542d10 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= <[email protected]>
> Date: Tue, 4 Nov 2025 19:06:06 +0100
> Subject: [PATCH] configure: add -static suffix to internal static libs for
> test programs
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
> 
> In MSVC builds, object files built for shared or static libraries are
> technically not compatible with each other. That's why building both
> shared and static libraries simultaneously is not allowed in configure.
> 
> However, for test programs, we still build internal static libraries
> that allow the test programs to access internal symbols.
> 
> In commit 8eca3fa619a7fb2190a3d4203e01a0d2661e7f91, I assumed that when
> CONFIG_STATIC=0, we would never build a static library. We actually do
> build one for internal purposes, ensuring that the objects are
> "compatible", mostly by avoiding dllimport/dllexport attributes.
> 
> Such libraries are never installed and are used only for test programs.
> This change adds a -static suffix to these internal libraries to avoid
> name conflicts. In the MSVC world, static libraries and import libraries
> are generally the same thing and share the same naming conventions.
> 
> Fixes: 8eca3fa619a7fb2190a3d4203e01a0d2661e7f91
> Signed-off-by: Kacper Michajłow <[email protected]>
> ---
> configure | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/configure b/configure
> index 3b132d07c9..9c197a241c 100755
> --- a/configure
> +++ b/configure
> @@ -6066,16 +6066,17 @@ case $target_os in
>         ;;
>     win32|win64)
>         disable symver
> +        LIBSUF=".lib"
>         if enabled shared; then
>             # Cannot build both shared and static libs with MSVC or icl.
>             disable static
> +            LIBSUF="-static.lib"
>         fi
>         ! enabled small && test_cmd $windres --version && enable gnu_windres
>         enabled x86_32 && check_ldflags -LARGEADDRESSAWARE
>         add_cppflags -DWIN32_LEAN_AND_MEAN
>         shlibdir_default="$bindir_default"
>         LIBPREF=""
> -        LIBSUF=".lib"
>         SLIBPREF=""
>         SLIBSUF=".dll"
>         SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
> -- 
> 2.49.1
> 
> _______________________________________________
> ffmpeg-devel mailing list -- [email protected]
> To unsubscribe send an email to [email protected]

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to