Здравствуйте, гость ( Вход | Регистрация )
Duker | Дата 13.6.2011, 19:54 |
Вообщем получись сделать задуманное при помощи 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. |
|
Litkevich Yuriy | Дата 13.6.2011, 7:32 |
http://doc.crossplatform.ru/qt/4.7.x/ipc.html | |
DIMEDROLL | Дата 12.6.2011, 23:07 |
Duker, dll существуют совсем не для этих целей. То что вам нужно называется Inter Process Communication (IPC) - межпроцессное взаимодействие и гуглить надо по этому термину. Самый простой вариант IPC это использование файлов, одна программа пишет в файл, другая читает. То же, но с использованием ОЗУ вместо жесткого диска называется Shared Memory, еще есть сетевое взаимодействие через сокеты (как указано выше), а так же Pipes и т.п.... msdn |
|
kuzulis | Дата 12.6.2011, 19:46 |
Ох, Ничего у вас не получится, почитайте для чего нужны длл-ки! В вашем случае используйте, к примеру, QLocalServer/QLocalSocket... Аналогичная тема была тут: http://www.prog.org.ru/topic_17997_0.html |
|
Duker | Дата 12.6.2011, 19:38 |
Всем привет. Столкнулся вот с такой проблемой. Есть два 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 выводятся нули...Вроде все указал... |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 18.4.2024, 9:50 |