![]() |
|
|
![]()
|
|
| becks |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Добрый день!
Необходимо создать dll на Qt с соглашением вызова stdcall, и не как иначе, поскольку подключаться будет к проекту на билдере, а тот утроен так, что ест только dll с соглашением вызова stdcall. Есть про файл:
Есть объявления функций DLLRobotRun.h:
Есть их определение:
Проект не собирается. Компилятор ругается на _export. Плюс прочитал на форумах, чтоб использовать __stdcall, необходимо поставить флаги: #QMAKE_CFLAGS += /Gz #QMAKE_CXXFLAGS += /Gz Поставил, ругается на /Gz и не знает QMAKE_CFLAGS. Вот как-то так. Qt Creator, MinGW, Qt 4.8.4 |
||||||
|
|||||||
| Avazart |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
Не надо ля-ля... Нормально и другие соглашения работают, просто писать надо правильно. Главное использовать extern "C", а в ф-циях указывать только простые типы. Это сообщение отредактировал(а) Avazart - 24.5.2013, 19:18 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Из дефайна _DLLROBOTFUNC убираешь __stdcall, а в объявления ф-ций добавляешь
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| becks |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Вы меня не правильно поняли. Эта программа на Билдере, она является универсальным "запускатором" dll. Есть строго заданный набор функций, которые должна импортировать каждая из библиотек. Т.е. условно говоря есть общий интерфейс для все библиотек. И соглашение там только stdcall. borisbn, большое спасибо за ответ. В понедельник на работе попробую. |
|||
|
||||
| Avazart |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
Вероятно его нет в Qt. Пробуй
Ну и можетт поменть местами его надо с __stdcall Это сообщение отредактировал(а) Avazart - 26.5.2013, 22:18 |
||||
|
|||||
| becks |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Это ж MSVC, если я правильно понимаю, он то тут причем? Собственно, если оставить вот так:
то dll-ка собирается, но функции имеют вид DLLConnect@8, DLLInit@4 и т.д. Вот есть хорошая статейка по соглашениям http://www.willus.com/mingw/yongweiwu_stdcall.html Вопрос все еще открыт, к сожалению, никак не получается. |
|||
|
||||
| Avazart |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
Как вариант написать "прокси" DLL на С++Builder.
Это сообщение отредактировал(а) Avazart - 1.6.2013, 23:23 |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |