서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.

안녕하세요.


현재 진행중인 프로젝트 때문에 NDK책을 사서 참조 하고 있습니다.

   - Target Board : TCC8930 SDK 개발 보드

         + 제조사 : 텔레칩스

         + Chip : TCC8930

         + Android : 젤리빈


NDK 책의 내용중에 외부 라이브러리 확용하기 란에서 책의 sample 을 테스트 하면 정상적으로 

라이브러리 <--> 라이브러리 사이의 함수 호출이 잘 되고 있습니다.


궁금한것은 지금 테스트 하고 있는 내용이 JNI를 통해서 Platform내부 *.so 내부에 있는 함수를 호출 하고 

싶어서 간단하게 테스트 해보는데 error:undefined reference to '<function name>' 발생하고 있습니다.


"android_root/hardware/telechips/.../extenddisplay" 이쪽 소스에 있는 함수를 호출 하는것인데. 계속 에러가 발생하

고 있어서 질문드립니다. 

grep으로 확인하면 so파일 내부에는 해당 함수가 존재하는데 error가 발생하느 원인을 모르겠습니다.

error.jpg


고도리

2013.08.30 19:16:24
*.200.239.210

tcc8930에서 특별하게 사용하는 hdmi용 output 함수가 있는 듯 합니다.


이 함수가 포함되어 있는 library 이름을 찾아서 Android.mk 파일에 추가해 주시면 될겁니다.

고도리

2013.08.30 19:25:08
*.200.239.210

undefined reference는 link시 함수가 없다라고 하는 얘기입니다.

link문제이기 때문에 거의 대부분 library문제입니다.

쭈암

2013.08.30 21:45:32
*.131.225.178

사용하시는 라이브러리가 다른 라이브러리를 또 사용하는 경우입니다.

A(작성한LIB)->B(플랫폼 LIB)->C(플랫폼 LIB) 이런 순서로 링크되는데.. C를 Link해주셔야 합니다.


엽스

2013.09.10 03:08:31
*.252.135.130

안녕하세요.


댓글 보고 여러가지 확인 해봤는데요.

고도리 님이 말씀하신데로 해당 라이브러리는 추가 된상태이고요.

   LOCAL_SHARED_LIBRARIES := \

  libextenddisplay \

libdzonetest \

libcutils \

libutils


쭈암님이 말씀하신데로 link를 걸어도 undefined reference error가 발생하네요.


확인차원에서 android_root/hardware/.../extenddisplay/extenddisplay.cpp 파일에 테스트 함수를 아래 처럼 추가하였습니다.

    $vi extenddisplay.cpp

          ....

          int callfunctest(int a, int b)

         {

      return a+b;

         }


출력 결과는 여전히 undefined reference to 'callfunctest' 라고 출력되네요.

call_func_error.jpg



libextenddisplay.so 파일을 "grep -re callfunctest *"로 검색하면 라이브러리 내부에는 있다고 합니다. 

 root@ubuntu:/mnt/android_tcc/s20/tcc_s20_jb/out/target/product/tcc8930st/system/lib# grep -re callfunctest libextenddisplay.so

Binary file libextenddisplay.so matches






첨부

엽스

2013.09.10 10:37:27
*.252.135.130

추천
1
비추천
0

문제점을 찾았습니다.


결론은 단순한 부분에서 비롯되어 네요.


      A(작성한 LIB) -> B(플랫폼 LIB) 


A의 작성한 LIB(JNI lib)쪽에서 extern "C" int callfunctest(int a, int b); 이렇게 하였는데.

B의 플랫폼 LIB 코드에도 extern "C" int callfunctest(int a, intb); 이렇게 선언을 해야 합니다.


따라서, 플랫폼 LIB의 해당 directory에 가서 header파일 하나 만들어서 

#ifdef __cplusplus

extern "C" {

#endif



int callfunctest(int a, int b);                                                                                    



#ifdef __cplusplus

}

#endif 

추가해준다음


작성한 LIB쪽 Android.mk 내부에 아래 코드 추가해줬습니다.

LOCAL_C_INCLUDES += \

$(JNI_H_INCLUDE) \

hardware/....../common/extenddisplay                    


  

List of Articles
번호 제목 글쓴이 날짜 조회 수sort
83 JNI로 휴대폰 디바이스 번호를 구하려고 합니다 file [3] fox8306 2012-09-19 6884
82 MediaServer 에 관련해서 질문드려요 [10] 김바람 2013-03-27 6580
81 안드로이드 4.2 프레임버퍼 접근 질문드려요~! [6] 범내 2013-07-30 5947
80 261페이지 맨 아랫줄에 대해 문의드립니다. [2] binch 2012-07-18 5747
79 hoffplay 컴파일 질문 입니다. [2] 여월광 2014-03-03 5690
78 [압축된 07-TestSkia 예제파일 올려주세요] [1] 밥줘잉 2013-05-23 5664
77 네이티브 스레드로 자바 콜백 만들기 질문드립니다. [2] 조재영 2013-02-14 5661
76 [예제12.SDL] Android 에서 SDL 사용하는 예제 실행 안됨 문의... [7] 둘리 2013-03-12 5609
» NDK 책내용중에 3.11 외부 라이브러리 활용하기 에서 질문 드립니... file [5] 엽스 2013-08-30 5590
74 드디어 안드로이드 소스까지 컴파일했습니다. [3] 죽유 2012-12-22 5548
73 책을 보다 몇가지 질문이 생겼습니다. [6] 더페이퍼 2012-09-18 5527
72 책에서 사용하고 있는 ffmpeg 소스. file [1] 전호철 2012-11-09 5496
71 init: sys_prop: unable to stop service ctl [DVBService] ... [2] 제임스59 2013-09-22 5480
70 OpenGL 책p168 예제 질문드립니다. Android홀릭 2013-02-06 5413
69 안드로이드의 모든 것NDK (고현철,전호철 지음) 책 실습 중 문제에... [1] 어떤이의꿈 2013-10-02 5398
68 NEON관련 좋은 참고 문서가 있을까요? [7] 죽유 2013-01-10 5392
67 카메라로부터 프래임 데이터 추출하는 예제 입니다. file [1] 죽유 2013-01-24 5383
66 apk uploading timeout에 대해 문의 드립니다. [2] 죽유 2013-01-10 5374
65 NDK 컴파일이 안됩니다. file [8] 더페이퍼 2012-09-25 5335
64 여러 분들이 말씀하신 것처럼 책(NDK)의 예제코드를 올려주실 수 없... [2] 트론 2013-08-24 5255

사용자 로그인