проблема с WCHAR, TChar и Char* |
Здравствуйте, гость ( Вход | Регистрация )
проблема с 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
|
Гости |
Вот так. не помогло где то советуют исльзовать 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 |
что не вариант Да сама библиотека XZip похоже тоже не вариант, если использует типы мелкомягких, наверно и winapi там тоже можно встретить, а winapi и Qt тоже как-то не особо правильно совмещать. И кстати по ссылкам в гугле несколько winapi методов было приведено как преобразовать. |
|
|
Гость_cppLamer_* |
9.9.2009, 20:25
Сообщение
#6
|
Гости |
что не вариант Да сама библиотека 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 командой:
В итоге у меня появились файлики: libunzsfx32.a libunzip32.a unzip32.dll Собственно unzip32.dll использует пример 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
|
Гости |
понятно, спасибо за разъяснение. буду пытаться.
|
|
|
Текстовая версия | Сейчас: 20.4.2024, 13:29 |