2016-08-18 31 views
0

試圖讓ICU庫與我的C程序一起工作,因此我可以將UTF-8字符串小寫。下面是將重現編譯錯誤最少例如:無法用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); 
    } 
} 

的Makefile

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/列出的頭文件,但沒有運氣。還嘗試將-licudata -licui18n -licuio -liculx -licutest -licutu -licuuc添加到Makefile中 - 同樣的錯誤。

我在Debian GNU/Linux的8.5(傑西),並且安裝了以下軟件包:

  • libicu52
  • libicu52-DBG
  • libicu-dev的
  • ICU-devtools

有什麼建議嗎?

回答

0

我認爲你需要#include <unicode/utypes>.但是你應該能夠通過搜索頭文件來找出哪一個Unicode包含文件是需要的,以找到哪個文件具有u_strlen_3_6的定義。

您可能還需要在makefile的CFLAGS參數中添加-I。

+0

包含文件解決編譯錯誤。 OP有鏈接錯誤。 – aschepler

相關問題