使用 ios 7+ 在 GStreamer 中编译错误

Compiling error in GStreamer with ios 7+

我正在使用 GStreamer.framework(二进制 1.4.5)已下载 here

我可以在部署目标 iOS 6.0 中 运行,但是当我在 iOS 7.0 中尝试 运行 时,出现链接错误。

以下是我收到的错误:

Undefined symbols for architecture armv7:
  "_gst_bus_async_signal_func", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "__gst_fraction_type", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "__gst_debug_min", referenced from:
      -[GStreamerBackend dealloc] in GStreamerBackend.o
      -[GStreamerBackend capture] in GStreamerBackend.o
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
      -[GStreamerBackend check_initialization_complete] in GStreamerBackend.o
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_message_parse_state_changed", referenced from:
      _state_changed_cb in GStreamerBackend.o
  "_g_clear_error", referenced from:
      _error_cb in GStreamerBackend.o
  "_gst_message_parse_error", referenced from:
      _error_cb in GStreamerBackend.o
  "_gst_element_get_bus", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_g_free", referenced from:
      _error_cb in GStreamerBackend.o
      _state_changed_cb in GStreamerBackend.o
  "_gst_pipeline_new", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_g_logv", referenced from:
      _g_warning in GStreamerBackend.o
  "_g_main_context_push_thread_default", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_element_factory_make", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_element_link_many", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_sample_get_caps", referenced from:
      -[GStreamerBackend capture] in GStreamerBackend.o
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
  "_gst_bin_get_type", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_object_unref", referenced from:
      -[GStreamerBackend dealloc] in GStreamerBackend.o
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_g_source_set_callback", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_g_main_loop_new", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_video_overlay_get_type", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_g_source_attach", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_g_signal_connect_data", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_g_main_loop_run", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_g_strdup_printf", referenced from:
      _error_cb in GStreamerBackend.o
      _state_changed_cb in GStreamerBackend.o
  "_gst_bus_create_watch", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_sample_get_buffer", referenced from:
      -[GStreamerBackend capture] in GStreamerBackend.o
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
  "_g_main_context_unref", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_buffer_map", referenced from:
      -[GStreamerBackend capture] in GStreamerBackend.o
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
  "_gst_mini_object_unref", referenced from:
      _gst_sample_unref in GStreamerBackend.o
  "_g_print", referenced from:
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
  "_g_type_check_instance_cast", referenced from:
      -[GStreamerBackend capture] in GStreamerBackend.o
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
      -[GStreamerBackend app_function] in GStreamerBackend.o
      _state_changed_cb in GStreamerBackend.o
  "_gst_buffer_unmap", referenced from:
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
  "_gst_debug_set_threshold_for_name", referenced from:
      -[GStreamerBackend init:videoView:] in GStreamerBackend.o
  "_gst_debug_set_colored", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_element_state_get_name", referenced from:
      _state_changed_cb in GStreamerBackend.o
  "_gst_bin_add_many", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_g_object_get", referenced from:
      -[GStreamerBackend capture] in GStreamerBackend.o
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
  "_g_main_context_new", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_object_get_type", referenced from:
      _state_changed_cb in GStreamerBackend.o
  "_gst_structure_get_int", referenced from:
      -[GStreamerBackend capture] in GStreamerBackend.o
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
  "_gst_element_set_state", referenced from:
      -[GStreamerBackend dealloc] in GStreamerBackend.o
      -[GStreamerBackend play] in GStreamerBackend.o
      -[GStreamerBackend pause] in GStreamerBackend.o
      -[GStreamerBackend app_function] in GStreamerBackend.o
      _error_cb in GStreamerBackend.o
  "_gst_video_overlay_set_window_handle", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_debug_log", referenced from:
      -[GStreamerBackend dealloc] in GStreamerBackend.o
      -[GStreamerBackend capture] in GStreamerBackend.o
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
      -[GStreamerBackend check_initialization_complete] in GStreamerBackend.o
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_bin_get_by_interface", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_caps_get_structure", referenced from:
      -[GStreamerBackend capture] in GStreamerBackend.o
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
  "_gst_caps_to_string", referenced from:
      -[GStreamerBackend capture] in GStreamerBackend.o
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
  "_gst_video_convert_sample", referenced from:
      -[GStreamerBackend capture] in GStreamerBackend.o
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
  "_g_object_set", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_gst_caps_new_simple", referenced from:
      -[GStreamerBackend capture] in GStreamerBackend.o
      -[GStreamerBackend getFrame:] in GStreamerBackend.o
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "__gst_debug_category_new", referenced from:
      -[GStreamerBackend init:videoView:] in GStreamerBackend.o
  "_g_main_loop_unref", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_g_main_context_pop_thread_default", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
  "_g_source_unref", referenced from:
      -[GStreamerBackend app_function] in GStreamerBackend.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如何清除此错误。我想 运行 这个 GStreamer 在 iOS 7+.

附加信息:

链接的库:

  1. GStreamer.framework(位置:

~/Library/Developer/GStreamer/iPhone.sdk/)

  1. UIKit
  2. 基金会
  3. 核心图形
  4. GLKit
  5. OpenGLES
  6. 视频工具箱
  7. libiconv.dylib

这是我的架构设置:

这是我的链接标志:

这是我的框架和 header 路径:

它的库版本问题..

添加了 libiconv2.4.0.dylib 而不是 libiconv.dylib
并添加 libstdc++6.0.9.dylib 而不是 libstdc++.dylib

现在它在 ios7+

中工作得非常好

谢谢 快乐流媒体:)