2016-08-18 1 views
0

UTF-8 문자열을 소문자로 처리 할 수 ​​있도록 ICU 라이브러리를 C 프로그램에서 작동 시키려고합니다. 여기 컴파일 오류 재현 최소 예제 :ICU 라이브러리로 컴파일 할 수 없음 - 'u_strlen_3_6'에 대한 정의되지 않은 참조

을 main.c는

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <unicode/ustring.h> 

int main(int argc, char **argv) 
{ 
    UChar test[100] = { 0x41, 0x42, 0x43, 0x20, 0xc6, 0xd8, 0xc5, 0x20, 0xc9, 0x20, 0xc8, 0x20, 0xd1, 0x20, 0xca, 0x20, 0xd6 }; 
    for (int i = 0; i < u_strlen(test); i++){ 
    printf("%d\n", i); 
    } 
} 
메이크

CC = gcc 
CFLAGS = -g -O3 -std=c99 
GNUCFLAGS = -g -O3 -std=gnu99 -lm 

main: obj/main.o 
    $(CC) $(CFLAGS) -o bin/main obj/main.o 

obj/main.o: src/main.c 
    $(CC) $(CFLAGS) -c src/main.c -o obj/main.o 

컴파일러 출력

gcc -g -O3 -std=c99 -o bin/main obj/main.o 
obj/main.o: In function `main': 
~/src/main.c:9: undefined reference to `u_strlen_3_6' 
collect2: error: ld returned 1 exit status 
Makefile:6: recipe for target 'main' failed 
make: *** [main] Error 1 

나는 행운과 함께 http://icu-project.org/apiref/icu4c/에 나열된 모든 헤더 파일을 포함 해 보았습니다. 또한 Makefile에 -licudata -licui18n -licuio -liculx -licutest -licutu -licuuc을 추가하려고 시도했습니다. 동일한 오류가 발생했습니다. 나는 데비안 GNU/리눅스 8.5 (제시) 다음과 같은 패키지에있어

가 설치됩니다

  • libicu52
  • libicu52-DBG
  • libicu-DEV
  • ICU-DevTools로

의견이 있으십니까?

답변

0

필자는 #include <unicode/utypes>.이 필요하다고 생각합니다.하지만 헤더 파일을 검색하여 u_strlen_3_6의 정의가 무엇인지 찾는 유니 코드 포함 파일을 알아낼 수 있어야합니다.

메이크 파일의 CFLAGS 매개 변수에 -I를 추가해야 할 수도 있습니다.

+0

포함 파일은 컴파일 오류를 해결합니다. OP에 링크 오류가 있습니다. – aschepler

관련 문제