Russian Qt Forum

Qt => Общие вопросы => Тема начата: Aleksey от Сентябрь 10, 2009, 18:25



Название: Qt и Dll
Отправлено: Aleksey от Сентябрь 10, 2009, 18:25
Здравствуйте.

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

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

P.S. Сама библиотека сторонних разработчиков, опробована и проверена временем, иными словами с нуля её писать мне представляется не оптимальным решением.


Название: Re: Qt и Dll
Отправлено: Rcus от Сентябрь 10, 2009, 19:37
Странный вопрос. А какие могут быть проблемы с Qt, это же даже не компилятор :) Может имеется ввиду сборка при помощи MinGW в составе Qt SDK для Windows? Ну так тоже проблем не должно быть. А то что она "неюникодная" в чем выражается? Разве TCHAR определен не как #ifdef UNICODE #define TCHAR wchar_t #else #define TCHAR char #endif?


Название: Re: Qt и Dll
Отправлено: Aleksey от Сентябрь 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)
То есть как я понимаю дело поправимо.Буду думать\искать... Или есть какие то нюансы ещё здесь (чтоб головой об стену не вышло) ?


Название: Re: Qt и Dll
Отправлено: kuzulis от Сентябрь 11, 2009, 08:03
А не проще ли использовать другие Win32 API функции??
Например не RegQueryValueExW а RegQueryValueExA или типо этого


Название: Re: Qt и Dll
Отправлено: Aleksey от Сентябрь 13, 2009, 22:43
Наконец-то до компа добрался...

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

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

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