Название: Написание dll на Qt для VB6 Отправлено: merke от Март 05, 2012, 16:24 Всем привет.
Встала необходимость написать маленькую библиотечку на Qt для VB6. её задачи это получить имя приложения, и найти его в процессах, и вернуть булевое значение. с возвращением значения всё тип-топ. но вот не получается передать в экспортируемую функцию строковое значение из VB6. ниже привожу код. Пожалуйста, кто сможет помогите! VB---- Код
Qt---- Код
Название: Re: Написание dll на Qt для VB6 Отправлено: Странник от Март 05, 2012, 17:36 String - строка символов в Юникоде, что-то вроде QChar*. а ваша функция char* принимает и запихивает ее в QString в ASCII-представлении. впрочем, я сегодня не спал, мне верить нельзя.
Название: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 05, 2012, 17:42 В том то и дело, что не могу угадать какой тип прописать вот здесь
Код: extern "C" bool retClass(char * c) Название: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 05, 2012, 19:48 Всё равно ни чего не понятно(((
Название: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 05, 2012, 20:35 Ошибка в VB BAD DLL CALLING CONVENTION (
Название: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 05, 2012, 20:48 спасибо большое за помощь. теперь следующая ошибка в VB вылетает can't find DLL entry point someFunc in test_lib
Название: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 05, 2012, 21:01 Добавил вот это:
#ifdef MYDLL_EXPORTS #define MYDLL_API __declspec(dllexport) #else #define MYDLL_API __declspec(dllimport) #endif и заработало. теперь Qt получает крякозяблики блин( Название: Re: Написание dll на Qt для VB6 Отправлено: Странник от Март 05, 2012, 22:22 Цитировать it is actually passing a pointer to a pointer to a string какбэ намекаэНазвание: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 06, 2012, 09:18 В общем всё получилось. Теперь отписываюсь. Авось кому нибудь пригодится.
Проект VB: Код
Проект Qt: main.cpp Код
.pro файл Код
И самое главное def. файл: Код
Теперь пытаюсь сделать следующее: вернуть из библиотеки не булеан значение, а к примеру тот же String. но пока ни чего не получилось. Код
Код
Приложение на VB просто напросто вылетает... Всем огромное СПАСИБО за оказанную помощь!!! Название: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 06, 2012, 11:17 Компилятор ругается release/main.o:main.cpp:(.text+0x2f): undefined reference to `SysAllocString@4'
Название: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 06, 2012, 11:29 Во! Спасибо! только теперь в VB возвращается только первый символ( из всего набора, которые я передаю в библиотеку
Название: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 06, 2012, 11:34 Вывел просто на форму функций Print и увидел что пришли все символы, но в компоненты когда выводишь, отображается только один символ. Видно не в той кодировке возвращается, получается какое то двухбайтовое представление
Название: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 06, 2012, 11:45 Да, теперь получается мне вернулось в UTF16 а мне нужно UTF8
Название: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 06, 2012, 11:46 Каждый символ два байта( а мне этого не нужно)
Название: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 06, 2012, 12:41 тоже самое, уже пробовал)
Название: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 06, 2012, 15:21 В голову не укладывается, что может быть в VB не так:
VB Код
Qt: Код
В месагбокс выводится только первый символ ("А"). Название: Re: Написание dll на Qt для VB6 Отправлено: merke от Март 06, 2012, 17:10 Уже интереснее. выводится всё ок, только в конце приписываются непонятные символы
|