Взаимодействие двух приложений на Qt через dll. |
Здравствуйте, гость ( Вход | Регистрация )
Взаимодействие двух приложений на Qt через dll. |
Duker |
12.6.2011, 19:38
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 12.6.2011 Пользователь №: 2739 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем привет.
Столкнулся вот с такой проблемой. Есть два Qt приложения KAUS и Arinc (2 exe файла) и dll файл тоже написаный на Qt (использую Qt Creator). Все лежит в одной директории. Суть такова использовать dll для обмена данными между приложениями. Т.е. одно приложение только записывает в переменные данные, а другое только считывает. Вообщем dll'ка работает исправно, когда её использует только одно приложение. Т.е. использую в одном приложении функцию SetStructValuesNAV для записи данных, а затем GetStructValuesNAV для чтения. Это работает. А если использую двумя приложениями то при чтении данных выдаются нули... Нашел информацию в интернете что при таком использовании dll каждое приложение имеет свой экземпляр объета dll и в этом случае надо использовать dll share. Вот пример кода что на данный момент есть. Файлы dll'ки Файл: Module_Navigation.pro
Файл: mysharedlib_global.h
Файл: module_navigation.h
Файл: module_navigation.cpp
Пример записи данных в dll из приложения Arinc
Пример чтения данных из dll из приложения KAUS выводятся нули...Вроде все указал...
Причина редактирования: используй кнопку КОД
|
|
|
Duker |
13.6.2011, 19:54
Сообщение
#2
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 12.6.2011 Пользователь №: 2739 Спасибо сказали: 0 раз(а) Репутация: 0 |
Вообщем получись сделать задуманное при помощи share переменной.
Если компилятор VC то юзать надо #pragma data_seg как написано здесь ссылка Если компилятор GCC... Вот что нарыл из документации по GCC shared On Microsoft Windows, in addition to putting variable definitions in a named section, the section can also be shared among all running copies of an executable or DLL. For example, this small program defines shared data by putting it in a named section shared and marking the section shareable:
You may only use the shared attribute along with section attribute with a fully initialized global definition because of the way linkers work. See section attribute for more information. The shared attribute is only available on Microsoft Windows. Но такие возможности я так понял есть только в Windows. |
|
|
Текстовая версия | Сейчас: 3.12.2024, 14:42 |