Russian Qt Forum
Ноябрь 26, 2024, 04:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt и Dll  (Прочитано 11264 раз)
Aleksey
Гость
« : Сентябрь 10, 2009, 18:25 »

Здравствуйте.

Подскажите возможно ли впринципе подружить Qt с "неЮникодовской" DLL (в частности  в ней используются TCHAR ) ?

под Builder и VS (с отключенным unicode кодировкой) всё запускается на ура.... 

P.S. Сама библиотека сторонних разработчиков, опробована и проверена временем, иными словами с нуля её писать мне представляется не оптимальным решением.
Записан
Rcus
Гость
« Ответ #1 : Сентябрь 10, 2009, 19:37 »

Странный вопрос. А какие могут быть проблемы с Qt, это же даже не компилятор Улыбающийся Может имеется ввиду сборка при помощи MinGW в составе Qt SDK для Windows? Ну так тоже проблем не должно быть. А то что она "неюникодная" в чем выражается? Разве TCHAR определен не как #ifdef UNICODE #define TCHAR wchar_t #else #define TCHAR char #endif?
Записан
Aleksey
Гость
« Ответ #2 : Сентябрь 10, 2009, 21:03 »

Да, Вы правы - я некорректно выразился. Действительно, MinGW в составе Qt SDK для Windows.
Вот перехожу с С++Builder-а, многое в новинку, с многим не сталкивался, поэтому вопросы такие странные)). 

А выражалось в том, что при компилировании выдаётся следующие:
.....error: cannot convert `TCHAR*' to `char*' for argument `1' to `char* strcat(char*, const char*)'
.....error: cannot convert `const char*' to `const WCHAR*' for argument `2' to `LONG RegQueryValueExW(HKEY__*, const WCHAR*, DWORD*, DWORD*, BYTE*, DWORD*)'

То есть действительно в частности TCHAR "криво" определён.


Разве TCHAR определен не как #ifdef UNICODE #define TCHAR wchar_t #else #define TCHAR char #endif?


Вот пристроил следующие:

#ifdef (_UNICODE)
#define TCHAR wchar_t
#else
#define TCHAR char
#endif

Теперь траблы только с WCHAR:

.....error: cannot convert `char*' to `const WCHAR*' for argument `2' to `LONG RegOpenKeyExW(HKEY__*, const WCHAR*, DWORD, REGSAM, HKEY__**)'

Спасибо Rcus)
То есть как я понимаю дело поправимо.Буду думать\искать... Или есть какие то нюансы ещё здесь (чтоб головой об стену не вышло) ?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Сентябрь 11, 2009, 08:03 »

А не проще ли использовать другие Win32 API функции??
Например не RegQueryValueExW а RegQueryValueExA или типо этого
Записан

ArchLinux x86_64 / Win10 64 bit
Aleksey
Гость
« Ответ #4 : Сентябрь 13, 2009, 22:43 »

Наконец-то до компа добрался...

А не проще ли использовать другие Win32 API функции??
Например не RegQueryValueExW а RegQueryValueExA или типо этого

В итоге так и сделал: покопался в описаниях и использовал аналогичные функции - субъективно оказалось проще)....
Хотя "в чужой монастырь код со своим уставом лезть нехорошо " (повторюсь библиотека сторонняя), но работает...

Спасибо за идею!!

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 22.