I'm getting a imp error when trying to compile FFmpeg with MinGW-w64. 
I'm trying to get libass enabled, which requires on fribidi.

Both of these packages compiled fine, but when trying to compile FFmpeg 
I get this error:

/home/kyle/software/ffmpeg/packages/libass/libass-0.10.0-win32/lib/libass.a(ass_shaper.o):ass_shaper.c:(.text+0x140):
 
undefined reference to `__imp__fribidi_get_joining_types'
/home/kyle/software/ffmpeg/packages/libass/libass-0.10.0-win32/lib/libass.a(ass_shaper.o):ass_shaper.c:(.text+0x168):
 
undefined reference to `__imp__fribidi_join_arabic'
/home/kyle/software/ffmpeg/packages/libass/libass-0.10.0-win32/lib/libass.a(ass_shaper.o):ass_shaper.c:(.text+0x198):
 
undefined reference to `__imp__fribidi_shape'
/home/kyle/software/ffmpeg/packages/libass/libass-0.10.0-win32/lib/libass.a(ass_shaper.o):ass_shaper.c:(.text+0x3f2):
 
undefined reference to `__imp__fribidi_get_bidi_types'
/home/kyle/software/ffmpeg/packages/libass/libass-0.10.0-win32/lib/libass.a(ass_shaper.o):ass_shaper.c:(.text+0x434):
 
undefined reference to `__imp__fribidi_get_par_embedding_levels'
/home/kyle/software/ffmpeg/packages/libass/libass-0.10.0-win32/lib/libass.a(ass_shaper.o):ass_shaper.c:(.text+0x696):
 
undefined reference to `__imp__fribidi_reorder_line'

The only __declspec(dllexport) I can find in fribidi is in lib/common.h:
#if (defined(WIN32)) || (defined(_WIN32_WCE))
# define FRIBIDI_ENTRY __declspec(dllexport)
#endif /* WIN32 */

I can't find any __declspec(dllexport) in libass.

There is no __imp__fribidi_get_joining_types anywhere in fribidi, but 
there is references to it in lib/libass.a. Running nm on the lib shows:
U __imp__fribidi_get_joining_types

FFmpeg is trying to compile with:
i686-w64-mingw32-gcc -Llibavcodec -Llibavdevice -Llibavfilter 
-Llibavformat -Llibavutil -Llibpostproc -Llibswscale -Llibswresample 
-L/home/kyle/software/ffmpeg/packages/libass/libass-0.10.0-win32/lib 
-L/home/kyle/software/ffmpeg/packages/freetype/freetype-2.4.8-win32/lib 
-Wl,--as-needed -Wl,--warn-common 
-Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil
 
-o ffmpeg_g.exe ffmpeg.o cmdutils.o -lavdevice -lavfilter -lavformat 
-lavcodec -lpostproc -lswresample -lswscale -lavutil -lavicap32 -lpsapi 
-lole32 -lstrmiids -luuid -lws2_32 
-L/home/kyle/software/ffmpeg/packages/libass/libass-0.10.0-win32/lib 
-L/home/kyle/software/ffmpeg/packages/fribidi/fribidi-0.19.2-win32/lib 
-L/home/kyle/software/ffmpeg/packages/freetype/freetype-2.4.8-win32/lib 
-lass -lm -lfribidi -lfreetype -lm -lpthread -lpsapi

Here is the part of code that has 'fribidi_get_joining_types' in libass:
static void shape_fribidi(ASS_Shaper *shaper, GlyphInfo *glyphs, size_t len)
{
     int i;
     FriBidiJoiningType *joins = calloc(sizeof(*joins), len);

     // shape on codepoint level
     fribidi_get_joining_types(shaper->event_text, len, joins);
     fribidi_join_arabic(shaper->ctypes, len, shaper->emblevels, joins);
     fribidi_shape(FRIBIDI_FLAGS_DEFAULT | FRIBIDI_FLAGS_ARABIC,
             shaper->emblevels, len, joins, shaper->event_text);

     // update indexes
     for (i = 0; i < len; i++) {
         GlyphInfo *info = glyphs + i;
         FT_Face face = info->font->faces[info->face_index];
         info->symbol = shaper->event_text[i];
         info->glyph_index = FT_Get_Char_Index(face, shaper->event_text[i]);
     }

     free(joins);
}

I'm not sure how much this info will help, I'm willing to provide any 
more needed.

Does anyone have any ideas?

Best regards,
   Kyle Schwarz

------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to