Всем привет ! Подскажите в чем проблема - нашел функция для перекодирования с utf-8 в cp1251 мне очень нужна эта функция но она нехочит работать подскажите пожалуйста ! Code: #include <stdio.h> #include <string.h> #include <iconv.h> #define N 64 void utf8c1251 (char *from, char *to) { int fl, tl; iconv_t d; fl=tl=strlen(from); d=iconv_open("CP1251","UTF-8"); iconv(d, &from,&fl,&to,&tl); iconv_close(d); } int main() { char s[N] = "Привет", t[N] = ""; utf8c1251(s, t); printf("s: %s\n", s); printf("t: %s\n", t); return 0; } ВЫДАЕТ Code: 1.cpp:25:2: warning: no newline at end of file 1.cpp: In function 'void utf8c1251(char*, char*)': 1.cpp:13: error: invalid conversion from 'char**' to 'const char**' 1.cpp:13: error: initializing argument 2 of 'size_t libiconv(void*, const char**, size_t*, char**, size_t*)' 1.cpp:13: error: invalid conversion from 'int*' to 'size_t*' 1.cpp:13: error: initializing argument 3 of 'size_t libiconv(void*, const char**, size_t*, char**, size_t*)' 1.cpp:13: error: invalid conversion from 'int*' to 'size_t*' 1.cpp:13: error: initializing argument 5 of 'size_t libiconv(void*, const char**, size_t*, char**, size_t*)' подскажите в чем проблема !
У кого есть сервер linux или freebsd попробуйте скомпелить - код вроде как написан правельно - но у меня на сервере не компелится - может проблема в сервере !
нет, код написан неправильно Code: .. void utf8c1251 ([COLOR=red]const[/COLOR] char *from, char *to) { [COLOR=red]size_t[/COLOR] fl, tl; ... и вообще это код на С, его желательно сохранять в файле *.c, а не *.cpp
код перепесал но проблема осталась Code: void utf8c1251 (const char *from, char *to) { size_t fl, tl; iconv_t d; fl=tl=strlen(from); d=iconv_open("CP1251","UTF-8"); iconv(d, &from,&fl,&to,&tl); iconv_close(d); } Code: 1.cpp:25:2: warning: no newline at end of file /var/tmp//ccmRr1iA.o(.text+0x2a): In function `utf8c1251(char const*, char*)': : undefined reference to `libiconv_open' /var/tmp//ccmRr1iA.o(.text+0x54): In function `utf8c1251(char const*, char*)': : undefined reference to `libiconv' /var/tmp//ccmRr1iA.o(.text+0x5f): In function `utf8c1251(char const*, char*)': : undefined reference to `libiconv_close' /var/tmp//ccmRr1iA.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
Получается gcc не видит libiconv но он установленн. Code: root# ldconfig -r | grep libintl 103:-lintl.8 => /usr/local/lib/libintl.so.8 root# ldconfig -r | grep iconv 19:-lkiconv.3 => /lib/libkiconv.so.3 102:-liconv.3 => /usr/local/lib/libiconv.so.3 root# ldconfig -r | grep libintl 103:-lintl.8 => /usr/local/lib/libintl.so.8 root# nm /usr/local/lib/libiconv.so.3 | grep libiconv_open 000171a0 T libiconv_open как это лечится ?