[FFmpeg-devel] [PATCH] libavformat\file:Fix duplicate JNI symbols

Zhao Zhili quinkblack at foxmail.com
Sun Mar 24 04:16:32 EET 2024


On 2024/3/24 03:05, admin at shaoxia.xyz wrote:
> From: 联盟少侠 <admin at shaoxia.xyz>
Could you configure git to avoid Chinese character?
>
> The errors indicate that there are multiple definitions of several JNI (Java Native Interface) symbols in the FFmpeg library. Specifically, the linker ld.lld has found duplicate definitions for the following symbols:
How to reproduce the error?
>
> - ff_jni_get_env
> - ff_jni_jstring_to_utf_chars
> - ff_jni_utf_chars_to_jstring
> - ff_jni_exception_get_summary
> - ff_jni_exception_check
> - ff_jni_init_jfields
> - ff_jni_reset_jfields
>
> These symbols are defined in both libavcodec.a and libavformat.a archives, leading to conflicts during the linking process. The duplicates are found in the same source file ffjni.c, but they are being compiled into two different static libraries.
>
> To resolve these errors, ensure that each symbol is defined only once across all linked libraries, or if these symbols are required in both libraries, they should be marked as weak symbols to allow the linker to handle them appropriately. Additionally, check for any build script misconfigurations that may be causing the same file to be included in multiple libraries.
> ---
>   libavformat/file.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavformat/file.c b/libavformat/file.c
> index dd5819c..fa13ae9 100644
> --- a/libavformat/file.c
> +++ b/libavformat/file.c
> @@ -43,7 +43,7 @@
>   #if CONFIG_ANDROID_CONTENT_PROTOCOL
>   #include <jni.h>
>   #include "libavcodec/jni.h"
> -#include "libavcodec/ffjni.c"
> +#include "libavcodec/ffjni.h"
>   #endif
This just break --enable-shared, so NACK.
>   
>   



More information about the ffmpeg-devel mailing list