2017-02-01 7 views
0

I 다음 두 항목을 포함한다 (libARWrapper.so가) 내지를 사용하여 도시 된 공유 라이브러리가 (내지 -D --defined 전용 libARWrapper.so): 2 회 나타나는 라이브러리 심볼을 공유

00075854 T Java_org_artoolkit_ar_base_NativeInterface_arwAcceptVideoImage 
00074d54 T Java_org_artoolkit_ar_base_NativeInterface_arwCapture 
... 
00072d54 T arwCapture 

나는 T means "기호는 텍스트 (코드) 섹션에 있습니다."알고

arwCapture가 두 번 나타나는 것과 arwAcceptVideoImage가 한 번만 나타나는 차이점은 무엇입니까?

은 내가 C# 같이 DllImport에서 arwCapture를 호출 할 수 있어요,하지만 arwAcceptVideoImage.
arwCapture와 똑같이 나타나는 다른 많은 함수도 있습니다. 모두 org.artoolkit.ar.bash.NativeInterface에 있습니다.이 함수는 제가 사용할 수 있습니다.
기타 (Java) 코드는 NDK를 통해 모든 기능을 호출 할 수 있습니다.

+1

텍스트 세그먼트에 무엇인가가 저장되어 있다고해서 그것이 자동으로 함수 또는 일부 코드임을 의미하지는 않습니다. 컴파일 타임 상수는 일반적으로 텍스트 세그먼트에서 끝납니다. 문자열 리터럴. –

+2

두 번 나타나는 기호가 표시되지 않습니다. 'Java_org_artoolkit_ar_base_NativeInterface_arwCapture'와'arwCapture'는 크게 다른 두 심볼입니다. 출력에는'arwAcceptVideoImage' 심볼이 언급되어 있지 않으므로 호출 할 수 없습니다. – nos

+0

감사합니다. 두 번 나타나는 것은 두 함수와 JNI 호출로 구분되지만, 한 번만 나타나는 정의입니다 JNI 호출. 지금 당장 감각이 살아, 고마워! – Jethro

답변

1

nm의 게시 된 결과에는 arwCapture()이 두 번 나타나지 않습니다.). 하나는 확실하게 어떤 점에서 arwCapture()을 호출하는 래퍼 인 JNI 함수입니다.

아마도 arwCapture()은 C#에서 호출 할 수있는 c 함수이지만 공유 객체에서는 arwAcceptVideoImage() 메서드가 정의되어 있지만 어디에도 arwAcceptVideoImage()이 없습니다.

이 공유 객체가 JNI 객체 인 경우 Java가 아닌 다른 언어에서 호출하지 않아야합니다. 대신 원본 라이브러리를 찾아서 사용하십시오.