뿌리 내린 안드로이드 장치에서 실행할 명령 줄 C++ 테스트 응용 프로그램 (실행 파일)을 만들고 있습니다.정의되지 않은 참조 오류 - rand
실행 파일은 미리 작성된 여러 개의 C 라이브러리를 사용하며 그 중 하나는 'rand()'를 사용합니다. 연결 상태에서 나는 "012"를 얻지 못했습니다. ""rand의 정의되지 않은 참조 "
경로가 제대로 설정되었는지 확인하려면 다음 방법을 시도해보십시오.
첫 번째 접근 방식 : 내 테스트 소스에서 rand()를 정의합니다.
내가하여 여러개의 정의 오류 통지, 첫 번째 정의는 생체 공학에있는/libc의이 /가 포함/stdlib.h
두 번째 방법 : 나는 알
내 테스트 응용 프로그램에서 사용 랜드() 링커는 여기에 정의되지 않은 기호
세 번째 방법에 대해 불평하지 않는 모든 오브젝트 파일 보관되지 및 보관
아직 정의되지 않은 참조 오류가 있음을 알았습니다.
'rand'를 사용하는 C 라이브러리를 C 테스트 파일을 사용하여 실행 파일로 컴파일하면 언급 된 링커 오류가 표시되지 않습니다.
미리 작성된 정적 라이브러리를 수정할 수 없으며 C++ 기반 테스트 응용 프로그램에서 라이브러리를 사용해야합니다.
모든 입력을 환영합니다.
라이브러리에서 'rand'가 'unsigned int rand'대신 'int rand'를 반환 할 것으로 기대하는 것 같습니다. 정적으로 링크되어있는 경우 왜 '해킹'을 사용하고 테스트 C 파일을 컴파일/링크해야합니까? –
rand는 표준 C 모듈이며 공유 객체 또는 실행 파일을 만드는 동안 링크됩니다. 정적 라이브러리는 나에게 제공되며, rand() 호출을 사용하며 정의가 포함되어 있지 않습니다. – Deepak
나는 심볼 덤퍼를 들여다 보길 권한다. 나는 rand()가 무엇인지 알기 때문에 정적 라이브러리가 C 라이브러리가 사용하는 버전과 다른 버전으로 컴파일되었을 가능성이 높습니다. 이것을 여러 가지 방법으로 정리할 수 있습니다 (자신의 랜드를 제공하고 C rand에 래퍼를 제공하는 등).하지만 가장 좋은 방법은 심볼 덤프를 확인하는 것입니다. 또한 http://stackoverflow.com/questions/4768180/rand-implementation으로 안내합니다. –