2010-06-21 4 views
1

파이프 라인에 넣을 때 데이터를 생성하는 요소가있는 gstreamer 플러그인을 만들었습니다 (GStreamer Plugin Writer's Guide을 따라).gstreamer 플러그인을로드 할 때 발생하는 문제를 어떻게 진단합니까?

내 문제는 테스트 응용 프로그램에서 내 플러그인을로드 할 수 없습니다.. gst_element_factory_make("myextractor", NULL)으로 전화하면 결과는 항상 NULL입니다.

더 많은 데이터 (I이이 관계가 확실하지 않다) : 내 DLL에 gst-inspect을 실행하면

나는 (출력 Cygwin에서 사용하여 생성) 불완전 출력을 얻을 :

[email protected] /cygdrive/c/work 
$ /cygdrive/c/OSSBuild/GStreamer/v0.10.6/bin/gst-inspect.exe MyProject/Release/gstxyzlibrary.dll 
Plugin Details: 
    Name:     myextractor 
    Description:   XYZ Library 
    Filename:    MyProject/Release/gstxyzlibrary.dll 
    Version:    1.0 
    License:    LGPL 
    Source module:  myextractor 
    Binary package:  MyProject 
    Origin URL:   http://www.example.com/ 

    myextractor: XYZExtractor 

    1 features: 
    +-- 1 elements 

나는이를 비교하는 경우 avisubtitle addon (GStreamer Good Plug-ins 패키지에서)을 사용하면 정보가 훨씬 적습니다. 예를 들어

, 내 플러그인은 말한다 :

1 features: 
    +-- 1 elements 

avisubtitle 플러그인 ($ /cygdrive/c/OSSBuild/GStreamer/v0.10.6/bin/gst-inspect.exe avisubtitle를 사용하여 생성) 말한다 :

GObject 
+----GstObject 
     +----GstElement 
      +----GstAviSubtitle 

내 질문 :이 디버깅하는 방법에 대한 조언이 필요합니다/결정 내가 누락 된 부분 (디버깅 출력, 설정 및 경로 검사 가능). 내 테스트 코드 (gst_element_factory_make에 대한 호출)는 Songbird 아담으로 작성되었지만 코드를 별도의 실행 파일에 넣으면 동일한 결과를 얻습니다.

답변

2

그것은 수도 로더가 플러그인을 찾을 수 없기 때문에, 당신은 당신의 플러그인이 공유 라이브러리 경로에 있는지 확인해야합니다 수 :

당신이 컴파일하여 포함 된 디렉토리에 LD_LIBRARY_PATH 환경 변수를 설정했는지 확인 플러그인.

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/cygdrive/c/path/to/your/plugin/"

당신은 또한 컴파일시 검색 경로를 지정 -L 링커 옵션을 사용할 수 있습니다 : 당신이 당신의 프로그램을 실행하기 전에

Cygwin에서, 귀하의 .profile이를 추가하거나 실행합니다.

0

몇 가지 사항이 누락되었을 수 있으므로 질문에 답변하는 방법을 모르겠습니다. 나는 미해결 된 기호 depedencies (비록 당신이 실제로 플러그인을 검사 할 수 있기 때문에 가능성은 없지만) 또는 잘못된 등록, 어떻게 든 (잘못하기가 어렵습니다), 아마도 무시한 노래 버드 또는 창과 관련된 문제에 대해 생각합니다.

그러나 GStreamer에는 하나 이상의 요소가 포함될 수있는 "플러그인"(일명 동적으로로드 가능한 라이브러리)이 있습니다. 플러그인 또는 요소를 gst-introspect하면 다른 출력을 얻습니다! "avisubtitle"의 경우 요소이며 클래스 계층 구조를 읽을 수 있습니다. 플러그인 (또는 라이브러리) "avi"또는 "/usr/lib/gstreamer-0.10/libgstavi.so"(Unixes)를 검토하면 포함 된 요소 목록과 몇 가지 공통 속성 (버전, 프로젝트 등)을 얻을 수 있습니다 ..).

예를 들어, gst-introspect XYZ (XYZ 라이브러리 또는 라이브러리에 대한 경로) gst-introspect XYZ합니다 (XYZ 라이브러리에있는 요소의 XYZ 이름)

은 아마도 그 뜻이 당신을 도와 다릅니다.행운을 빕니다! 오, 오류/경고는 환경 변수와 함께 표시 될 수 있습니다. GST_DEBUG=*:2

관련 문제