Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

11.07.2009, 19:28
|
|
Участник форума
Регистрация: 04.02.2009
Сообщений: 132
Провел на форуме: 350627
Репутация:
1
|
|
c++ проблема с iconv()
Всем привет !
Подскажите в чем проблема - нашел функция для
перекодирования с utf-8 в cp1251
мне очень нужна эта функция но она нехочит
работать подскажите пожалуйста !
Код:
#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;
}
ВЫДАЕТ
Код:
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*)'
подскажите в чем проблема !
|
|
|

11.07.2009, 22:25
|
|
Участник форума
Регистрация: 04.02.2009
Сообщений: 132
Провел на форуме: 350627
Репутация:
1
|
|
У кого есть сервер linux или freebsd попробуйте скомпелить - код вроде как написан правельно - но у меня на сервере не компелится - может проблема в сервере !
|
|
|

11.07.2009, 22:27
|
|
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме: 1777055
Репутация:
347
|
|
У кого есть сервер linux или freebsd попробуйте скомпелить - код вроде как написан правельно - но у меня на сервере не компелится - может проблема в сервере !
нет, код написан неправ ильно
Код:
..
void utf8c1251 (const char *from, char *to)
{
size_t fl, tl;
...
и вообще это код на С, его желательно сохранять в файле *.c, а не *.cpp
Последний раз редактировалось bons; 11.07.2009 в 22:35..
|
|
|

11.07.2009, 22:38
|
|
Участник форума
Регистрация: 04.02.2009
Сообщений: 132
Провел на форуме: 350627
Репутация:
1
|
|
код перепесал но проблема осталась
Код:
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);
}
Код:
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'
|
|
|

11.07.2009, 22:49
|
|
Участник форума
Регистрация: 04.02.2009
Сообщений: 132
Провел на форуме: 350627
Репутация:
1
|
|
Сообщение от bons
и вообще это код на С, его желательно сохранять в файле *.c, а не *.cpp
А мне на с++ нужен - есть у кого пример ?
|
|
|

12.07.2009, 15:00
|
|
Участник форума
Регистрация: 04.02.2009
Сообщений: 132
Провел на форуме: 350627
Репутация:
1
|
|
Получается gcc не видит libiconv
но он установленн.
Код:
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
как это лечится ?
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|