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