I´ve spent many hours trying to figure out why I still get "undefined reference" when trying to link to ffmpeg. I´ve already read most of not all posts and sites about the subject, so I think I´m missing something little here and I hope you can help me.
What I have: I´m using windows 7 + cygwin + crystax r4. I´ve compiled FFMPEG using RockPlayer's ffmpeg source plus some modifications I did (only to include / exclude demuxes, decoders, encoders, ...) After compiling, I get: a new folder named armv5te, which includes: a folder named "include" with all folders for each libs' .h a folder named "lib" which includes all libs' .a a shared library named libffmpeg.so (checked soname and it is libffmpeg) The shared library isn´t also placed on project/lib/armeabi/ libffmpeg.so After compiling I tried to compile my project and link it. While my .cpp compiles ok, I get many undefined references. Here is my android.mk: -------------------------------------------------- LOCAL_PATH := $(call my-dir) #declare the prebuilt library include $(CLEAR_VARS) LOCAL_MODULE := ffmpeg-prebuilt LOCAL_SRC_FILES := $(LOCAL_PATH)/ffmpeg/android/armv5te/libffmpeg.so LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/ffmpeg/android/armv5te/ include LOCAL_PRELINK_MODULE := true include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := audiocodec LOCAL_SRC_FILES := ffmpeg_audio.cpp LOCAL_SHARED_LIBRARY := libffmpeg LOCAL_C_INCLUDES := $(LOCAL_PATH)/ffmpeg/android/armv5te/include LOCAL_LDLIBS := -llog -ljnigraphics -lz -lm $(LOCAL_PATH)/ffmpeg/ android/armv5te/libffmpeg.so include $(BUILD_SHARED_LIBRARY) -------------------------------------------------- The result: -------------------------------------------------- Compile++ thumb: audiocodec <= /cygdrive/c/Gabriel/Desenvolvimento/ Workspace/FFM PEG/jni/ffmpeg_audio.cpp SharedLibrary : libaudiocodec.so /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/obj/local/armeabi/ objs/audi ocodec/ffmpeg_audio.o: In function `Java_gabriel_audioslower_pro_ffmpegDecoder_r eadSamples': /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:172: u ndefined reference to `avcodec_decode_audio3(AVCodecContext*, short*, int*, AVPa cket*)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:178: u ndefined reference to `av_read_frame(AVFormatContext*, AVPacket*)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/obj/local/armeabi/ objs/audi ocodec/ffmpeg_audio.o: In function `Java_gabriel_audioslower_pro_ffmpegDecoder_s eekToPosMS': /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:147: u ndefined reference to `av_rescale_q(long long, AVRational, AVRational)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:150: u ndefined reference to `av_seek_frame(AVFormatContext*, int, long long, int)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:151: u ndefined reference to `avcodec_flush_buffers(AVCodecContext*)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:152: u ndefined reference to `av_read_frame(AVFormatContext*, AVPacket*)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/obj/local/armeabi/ objs/audi ocodec/ffmpeg_audio.o: In function `Java_gabriel_audioslower_pro_ffmpegDecoder_c loseFile': /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:82: un defined reference to `avcodec_close(AVCodecContext*)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:83: un defined reference to `av_free(void*)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:84: un defined reference to `av_close_input_file(AVFormatContext*)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/obj/local/armeabi/ objs/audi ocodec/ffmpeg_audio.o: In function `Java_gabriel_audioslower_pro_ffmpegDecoder_o penAudioFile': /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:37: un defined reference to `av_open_input_file(AVFormatContext**, char const*, AVInput Format*, int, AVFormatParameters*)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:44: un defined reference to `av_find_stream_info(AVFormatContext*)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:52: un defined reference to `avcodec_find_decoder(CodecID)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:60: un defined reference to `avcodec_open(AVCodecContext*, AVCodec*)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:67: un defined reference to `av_malloc(unsigned int)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:70: un defined reference to `av_read_frame(AVFormatContext*, AVPacket*)' /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/obj/local/armeabi/ objs/audi ocodec/ffmpeg_audio.o: In function `JNI_OnLoad': /cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/jni/ ffmpeg_audio.cpp:25: un defined reference to `av_register_all()' collect2: ld returned 1 exit status make: *** [/cygdrive/c/Gabriel/Desenvolvimento/Workspace/FFMPEG/obj/ local/armeab i/libaudiocodec.so] Error 1 -------------------------------------------------- Something interesting is that some functions from ffmpeg, as av_register_all(), do now show up on the list of undefined references. Any ideas on what I can do to fix it? I´ve spent 3 days trying to make things work .. Thanks! -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

