crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> проблема с WCHAR, TChar и Char*
Гость_cppLamer_*
сообщение 9.9.2009, 17:21
Сообщение #1





Гости








    


хотел подключить к проекту модули XZip.cpp и XUnzip, но при сборке вот такие ощибки
XZip.cpp:3140: error: cannot convert `TCHAR*' to `char*' for argument `1' to `char* strcpy(char*, const char*)'
XZip.cpp:3141: error: cannot convert `TCHAR*' to `char*' for argument `1' to `char* strcat(char*, const char*)'
XZip.cpp:3142: error: cannot convert `TCHAR*' to `char*' for argument `1' to `char* strcat(char*, const char*)'
XZip.cpp:3143: error: cannot convert `TCHAR*' to `char*' for argument `1' to `char* strcat(char*, const char*)'
XZip.cpp:3158: error: cannot convert `WCHAR*' to `const char*' for argument `1' to `int strcmp(const char*, const char*)'
XZip.cpp:3159: error: cannot convert `WCHAR*' to `const char*' for argument `1' to `int strcmp(const char*, const char*)'
XZip.cpp:3166: error: cannot convert `TCHAR*' to `char*' for argument `1' to `char* strcat(char*, const char*)'
XZip.cpp:3167: error: cannot convert `TCHAR*' to `char*' for argument `1' to `char* strcat(char*, const char*)'
XZip.cpp:3168: error: cannot convert `TCHAR*' to `char*' for argument `1' to `char* strcat(char*, const char*)'
XZip.cpp:3182: error: cannot convert `TCHAR*' to `char*' for argument `1' to `char* strcpy(char*, const char*)'
XZip.cpp:3183: error: cannot convert `TCHAR*' to `char*' for argument `1' to `char* strcat(char*, const char*)'
XZip.cpp:3184: error: cannot convert `TCHAR*' to `char*' for argument `1' to `char* strcat(char*, const char*)'

как исправить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 9.9.2009, 17:32
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Вот так.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_cppLamer_*
сообщение 9.9.2009, 17:56
Сообщение #3





Гости








    


Цитата(SABROG @ 9.9.2009, 17:32) *
Вот так.


не помогло :) где то советуют исльзовать BOOL CharToOem(LPCTSTR lpszSrc, LPSTR lpszDst); из user32.dll что не вариант, половина таких вопростов без ответа, кто то вообще циклом переводит. и к сведению до того как задать вопрос всегда пытаюсь сам найти ответ, так что не надо меня посылать в гугл.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 9.9.2009, 18:38
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Ключевым для поиска тут является перевод UNICODE (TCHAR и WCHAR) в ANSI.

Кстати, причем тут QT?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 9.9.2009, 19:12
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(Гость_cppLamer_* @ 9.9.2009, 18:56) *
что не вариант


Да сама библиотека XZip похоже тоже не вариант, если использует типы мелкомягких, наверно и winapi там тоже можно встретить, а winapi и Qt тоже как-то не особо правильно совмещать. И кстати по ссылкам в гугле несколько winapi методов было приведено как преобразовать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_cppLamer_*
сообщение 9.9.2009, 20:25
Сообщение #6





Гости








    


Цитата(SABROG @ 9.9.2009, 19:12) *
Цитата(Гость_cppLamer_* @ 9.9.2009, 18:56) *
что не вариант


Да сама библиотека XZip похоже тоже не вариант, если использует типы мелкомягких, наверно и winapi там тоже можно встретить, а winapi и Qt тоже как-то не особо правильно совмещать. И кстати по ссылкам в гугле несколько winapi методов было приведено как преобразовать.


Да верно, а жаль.. давно уже мучаюсь с проблемой как бы работать с zip-ом. была вот тут ваша статья
http://vingrad.ru/blogs/sabrog/2009/03/20/...s-zip-arhivami/, но этот метод с некоторыми zip архивами не работает, обсуждалось тут http://www.prog.org.ru/topic_9026_0.html. но так ничего и не выяснили. :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 9.9.2009, 22:09
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Я решил пойти правильным путем и задался вопросом. Что используют в linux для распаковки .zip архивов. Linux - потому, что будут доступны исходники. Это привело меня к утилите unzip, которая является частью проекта Info-Zip. К счастью проект не мертвый и последний релиз 6.0 был в этом году 25 апреля. Далее я скачал исходники утилиты unzip (есть еще и zip, но пока они мне не нужны). К счастью почитав файлик INSTALL я спокойно собрал все на mingw командой:

mingw32-make -f win32/Makefile.gcc all


В итоге у меня появились файлики:
libunzsfx32.a
libunzip32.a
unzip32.dll

Собственно unzip32.dll использует пример uzexampl.exe, который удачно распаковал тестовый архив в корневой директории testmake.zip:

uzexampl.exe testmake.zip


Теперь о грустном.

unzip32.dll использует функции из libunzip32.a, ключевым звеном для всего этого является метод pWiz_SingleEntryUnzip, который вызывается из uzexampl.exe. А сам метод pWiz_SingleEntryUnzip вызывает метод Wiz_Unzip, а уже тот вызывает метод process_zipfiles() из самой библиотеки. И все это обрамлено кучей, не понятного мне, подготовительного кода.

Резюме такое. Сделать можно, но нужно перелопатить исходники windll.c или unzip.c выбросив всё winapi'шное и переписав под Qt или STL.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_cppLamer_*
сообщение 10.9.2009, 9:59
Сообщение #8





Гости








    


понятно, спасибо за разъяснение. буду пытаться.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 13:29