[FFmpeg-cvslog] libavcodec: Don't use dllexport, only dllimport when building DLLs

Martin Storsjö git at videolan.org
Mon Nov 20 00:53:24 EET 2017


ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Thu Sep 14 08:33:05 2017 +0300| [3152058bf1dca318898550efacf0286f4836cae6] | committer: Martin Storsjö

libavcodec: Don't use dllexport, only dllimport when building DLLs

The only purpose of dllexport (which is set while building the library
that exports the symbols) is to have the linker automatically
export such symbols into a DLL without using a def file - it doesn't
affect the generated code.

For both MSVC and mingw builds, this isn't essential since we override
what symbols to export via an autogenerated def file instead.

Update a comment in configure to refer to the right concept.

With lld, this avoids warnings about duplicate export directives,
when some symbols are requested to be exported both via dllexport
attributes and via the autogenerated def file.

This also reduces the number of lines of code marginally.

Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3152058bf1dca318898550efacf0286f4836cae6
---

 configure             | 2 +-
 libavcodec/internal.h | 6 +-----
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/configure b/configure
index fcffbce7f9..7f320fee18 100755
--- a/configure
+++ b/configure
@@ -3883,7 +3883,7 @@ case $target_os in
     mingw32*|mingw64*)
         target_os=mingw32
         if enabled shared; then
-            # Cannot build both shared and static libs when using dllexport.
+            # Cannot build both shared and static libs when using dllimport.
             disable static
         fi
         check_ldflags -Wl,--nxcompat
diff --git a/libavcodec/internal.h b/libavcodec/internal.h
index da1b2fa7d1..868e3dfc54 100644
--- a/libavcodec/internal.h
+++ b/libavcodec/internal.h
@@ -285,12 +285,8 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame);
  */
 AVCPBProperties *ff_add_cpb_side_data(AVCodecContext *avctx);
 
-#if defined(_WIN32) && CONFIG_SHARED
-#ifdef BUILDING_avcodec
-#    define av_export_avcodec __declspec(dllexport)
-#else
+#if defined(_WIN32) && CONFIG_SHARED && !defined(BUILDING_avcodec)
 #    define av_export_avcodec __declspec(dllimport)
-#endif
 #else
 #    define av_export_avcodec
 #endif



More information about the ffmpeg-cvslog mailing list