crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
Darvin
  опции профиля:
сообщение 19.1.2008, 18:58
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 36
Регистрация: 30.11.2007
Пользователь №: 30

Спасибо сказали: 0 раз(а)




Репутация:   0  


Не въезжаю, как реализовать создание и/или подключение shared memory на QT, так чтобы
код был совместим с любой платформой и
при компиляции под каждой осью, из нативного приложения можно было бы обратится к этой памяти.

Например. Сервер реализован как QT-приложение, создает разделяемую память, а
другое приложение реализованое без QT как win32/atl/wtl подключается к ней.
Тоже самое под *Nix, клиент без QT.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 19.1.2008, 19:26
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


На сколько я понимаю, бесплатного готового решения в Qt нет, есть The Shared Memory component provides cross-platform access to shared memory, но он относится к comercial edition. :(

Сообщение отредактировал ViGOur - 19.1.2008, 19:26
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Darvin
  опции профиля:
сообщение 19.1.2008, 19:41
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 36
Регистрация: 30.11.2007
Пользователь №: 30

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 19.1.2008, 19:26) *
На сколько я понимаю, бесплатного готового решения в Qt нет, есть The Shared Memory component provides cross-platform access to shared memory, но он относится к comercial edition. :(

Мне всё равно, это для домашнего хозяйства, лишь бы средство было.
Скачать, кстати, не получается, требует авторизацию. Где стырить?

Я принцип не понимаю, ведь в *Nix, Windows и QT работа с разделяемой памятью реализована по разному. В QT через специальные классы. А как потом с ней работать не въезжаю.

Сообщение отредактировал Darvin - 19.1.2008, 19:50
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 19.1.2008, 19:54
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Darvin @ 19.1.2008, 19:41) *
Скачать, кстати, не получается, требует авторизацию. Где стырить?
Гуглить нужно, наверняка где-нибудь да завалялось.

Цитата(Darvin @ 19.1.2008, 19:41) *
Я принцип не понимаю, ведь в *Nix, Windows и QT работа с разделяемой памятью реализована по разному. В QT через специальные классы. А как потом с ней работать не въезжаю.
Там примеры есть и описание, как работать с разделяемой памятью между потоками и между процессами...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 19.1.2008, 20:03
Сообщение #5


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Вот нашел, правда за 2004 год: Qt Solutions 02.12.2004
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
balbes
  опции профиля:
сообщение 19.1.2008, 21:02
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 62
Регистрация: 11.10.2007
Пользователь №: 10

Спасибо сказали: 0 раз(а)




Репутация:   0  


А для чего может понадобиться данный компонет, можете сказать? Для каких задач?
У меня пока мало опыта, почему и спрашиваю! :rolleyes:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Darvin
  опции профиля:
сообщение 20.1.2008, 0:01
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 36
Регистрация: 30.11.2007
Пользователь №: 30

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 19.1.2008, 20:03) *
Вот нашел, правда за 2004 год: Qt Solutions 02.12.2004

Скачал. Кажется это для QT3. Прикручивать придется.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Darvin
  опции профиля:
сообщение 20.1.2008, 0:06
Сообщение #8


Студент
*

Группа: Новичок
Сообщений: 36
Регистрация: 30.11.2007
Пользователь №: 30

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(balbes @ 19.1.2008, 21:02) *
А для чего может понадобиться данный компонет, можете сказать? Для каких задач?
У меня пока мало опыта, почему и спрашиваю! :rolleyes:

Это классы для работы с разделяемой памятью. Нужно для межпроцессного обмена данными.
Например. Одна программа(Сервер) пишет в эту область данные, а другие программы их читают по мере необходимости или размещают там свои данные.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 20.1.2008, 1:49
Сообщение #9


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Darvin @ 20.1.2008, 0:01) *
Скачал. Кажется это для QT3. Прикручивать придется.
Угу, я и говорю старенькое.
Говорят что можно найти и Solution 2.3 (для Qt 4), но нужно искать...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Darvin
  опции профиля:
сообщение 20.1.2008, 15:30
Сообщение #10


Студент
*

Группа: Новичок
Сообщений: 36
Регистрация: 30.11.2007
Пользователь №: 30

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 20.1.2008, 1:49) *
Цитата(Darvin @ 20.1.2008, 0:01) *
Скачал. Кажется это для QT3. Прикручивать придется.
Угу, я и говорю старенькое.
Говорят что можно найти и Solution 2.3 (для Qt 4), но нужно искать...

Тем не менее, с моим проектом на QT4, qtsharedmemory 1.1 , компилируется без ошибок. До первой ошибки сойдет, а дальше надеюсь найти поновее.

Сообщение отредактировал Darvin - 20.1.2008, 15:38
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 22.1.2008, 11:10
Сообщение #11


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Зачем тырить-то? Используй Boost.interprocess - всё легально и переносимо. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Darvin
  опции профиля:
сообщение 24.1.2008, 12:11
Сообщение #12


Студент
*

Группа: Новичок
Сообщений: 36
Регистрация: 30.11.2007
Пользователь №: 30

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Tonal @ 22.1.2008, 11:10) *
Зачем тырить-то? Используй Boost.interprocess - всё легально и переносимо. :)

Пожалуй, это самое то! Ведь, с одной стороны, сервер все равно не имеет визуального интерфейса. С другой стороны, основные клиентские приложения уже на win32. QT потребуется только когда буду дополнительный(необязательный) интерфейс ваять.

Вот только я сразу не нашел interprocess. Это отдельная либа или входит куда-то?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Darvin
  опции профиля:
сообщение 24.1.2008, 16:16
Сообщение #13


Студент
*

Группа: Новичок
Сообщений: 36
Регистрация: 30.11.2007
Пользователь №: 30

Спасибо сказали: 0 раз(а)




Репутация:   0  


И как это прицепить к Eclipse и MinGW?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 25.1.2008, 8:11
Сообщение #14


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Скоро выйдет релиз 1.35 там оно будет.
Если ленно ждать - выдёргивай исходники из SVN - там все новые фишки уже есть. :)

Ну а прицепить к Эклипсу так же как и остальные библиотеки - прописываешь пути к хедерам и либкам и вперёд. :)
Да, если нужна сетевая либа, можешь посмотреть на Boost.asio.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
qstroy
  опции профиля:
сообщение 26.4.2008, 15:32
Сообщение #15


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 26.4.2008
Пользователь №: 159

Спасибо сказали: 0 раз(а)




Репутация:   0  


В сети нашел Trolltech.Qt.Solutions.for.Qt4, в нем есть qtsharedmemory-2.0-commercial.tar.gz.

Проблемка скомпилировать прилагаемые примеры ругается на

..\..\src\qtsharedmemory_win.cpp: In member function `bool QtSharedMemory::creat
e(int)':
..\..\src\qtsharedmemory_win.cpp:60: error: invalid conversion from `const ushor
t*' to `const WCHAR*'
..\..\src\qtsharedmemory_win.cpp:60: error:   initializing argument 6 of `void*
CreateFileMappingW(void*, _SECURITY_ATTRIBUTES*, DWORD, DWORD, DWORD, const WCHA
R*)'
..\..\src\qtsharedmemory_win.cpp: In member function `bool QtSharedMemory::attac
h(QtSharedMemory::Mode)':
..\..\src\qtsharedmemory_win.cpp:108: error: invalid conversion from `const usho
rt*' to `const WCHAR*'
..\..\src\qtsharedmemory_win.cpp:108: error:   initializing argument 3 of `void*
OpenFileMappingW(DWORD, BOOL, const WCHAR*)'
..\..\src\qtsharedmemory_win.cpp: In member function `bool QtSharedMemory::lock(
)':
..\..\src\qtsharedmemory_win.cpp:212: error: invalid conversion from `const usho
rt*' to `const WCHAR*'
..\..\src\qtsharedmemory_win.cpp:212: error:   initializing argument 4 of `void*
CreateSemaphoreW(_SECURITY_ATTRIBUTES*, LONG, LONG, const WCHAR*)'
..\..\src\qtsharedmemory_win.cpp: In member function `bool QtSharedMemory::exist
s() const':
..\..\src\qtsharedmemory_win.cpp:272: error: invalid conversion from `const usho
rt*' to `const WCHAR*'
..\..\src\qtsharedmemory_win.cpp:272: error:   initializing argument 3 of `void*
OpenFileMappingW(DWORD, BOOL, const WCHAR*)'
mingw32-make[1]: *** [debug\qtsharedmemory_win.o] Error 1
mingw32-make[1]: Leaving directory `E:/Qt/Projects/qtsh_mem/examples/processcoun
ter'
mingw32-make: *** [debug] Error 2


подскажите что не так, всё делал по инструкции

Сообщение отредактировал Admin - 27.4.2008, 12:01
Причина редактирования: Не выкладываем исходники защищенные авторским правом.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 27.4.2008, 11:43
Сообщение #16


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Больше похоже на то, что mingw не знает что такое WCHAR* и const WCHAR*, попроблуй сделать определение данного типа у себя.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
qstroy
  опции профиля:
сообщение 27.4.2008, 16:19
Сообщение #17


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 26.4.2008
Пользователь №: 159

Спасибо сказали: 0 раз(а)




Репутация:   0  


как сделать определение ?

в qtsharedmemory_win.cpp делал такое определение
typedef unsigned short WCHAR;


на что получил

E:\Qt\Projects\qtsh_mem\examples\processcounter>make
mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `E:/Qt/Projects/qtsh_mem/examples/processcou
nter'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
DQT_THREAD_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -I"..\..\..\..\4.3.4\incl
ude\QtCore" -I"..\..\..\..\4.3.4\include\QtCore" -I"..\..\..\..\4.3.4\include\Qt
Gui" -I"..\..\..\..\4.3.4\include\QtGui" -I"..\..\..\..\4.3.4\include" -I"." -I"
..\..\src" -I"e:\Qt\4.3.4\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\4.3.4
\mkspecs\win32-g++" -o debug\qtsharedmemory_win.o ..\..\src\qtsharedmemory_win.c
pp
..\..\src\qtsharedmemory_win.cpp:28: error: conflicting declaration 'typedef sho
rt unsigned int WCHAR'
E:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/winnt.h:77: error: 'WC
HAR' has a previous declaration as `typedef wchar_t WCHAR'
..\..\src\qtsharedmemory_win.cpp:28: error: declaration of `typedef short unsign
ed int WCHAR'
E:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/winnt.h:77: error: con
flicts with previous declaration `typedef wchar_t WCHAR'
..\..\src\qtsharedmemory_win.cpp:28: error: declaration of `typedef short unsign
ed int WCHAR'
E:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/winnt.h:77: error: con
flicts with previous declaration `typedef wchar_t WCHAR'
..\..\src\qtsharedmemory_win.cpp: In member function `bool QtSharedMemory::creat
e(int)':
..\..\src\qtsharedmemory_win.cpp:62: error: invalid conversion from `const ushor
t*' to `const WCHAR*'
..\..\src\qtsharedmemory_win.cpp:62: error:   initializing argument 6 of `void*
CreateFileMappingW(void*, _SECURITY_ATTRIBUTES*, DWORD, DWORD, DWORD, const WCHA
R*)'
..\..\src\qtsharedmemory_win.cpp: In member function `bool QtSharedMemory::attac
h(QtSharedMemory::Mode)':
..\..\src\qtsharedmemory_win.cpp:110: error: invalid conversion from `const usho
rt*' to `const WCHAR*'
..\..\src\qtsharedmemory_win.cpp:110: error:   initializing argument 3 of `void*
OpenFileMappingW(DWORD, BOOL, const WCHAR*)'
..\..\src\qtsharedmemory_win.cpp: In member function `bool QtSharedMemory::lock(
)':
..\..\src\qtsharedmemory_win.cpp:214: error: invalid conversion from `const usho
rt*' to `const WCHAR*'
..\..\src\qtsharedmemory_win.cpp:214: error:   initializing argument 4 of `void*
CreateSemaphoreW(_SECURITY_ATTRIBUTES*, LONG, LONG, const WCHAR*)'
..\..\src\qtsharedmemory_win.cpp: In member function `bool QtSharedMemory::exist
s() const':
..\..\src\qtsharedmemory_win.cpp:274: error: invalid conversion from `const usho
rt*' to `const WCHAR*'
..\..\src\qtsharedmemory_win.cpp:274: error:   initializing argument 3 of `void*
OpenFileMappingW(DWORD, BOOL, const WCHAR*)'
mingw32-make[1]: *** [debug/qtsharedmemory_win.o] Error 1
mingw32-make[1]: Leaving directory `E:/Qt/Projects/qtsh_mem/examples/processcoun
ter'
mingw32-make: *** [debug] Error 2
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.4.2008, 16:51
Сообщение #18


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(' date='27.4.2008, 20:19) *
conflicting declaration 'typedef short unsigned int WCHAR'

значит где-то определено

Цитата(' date='26.4.2008, 19:32) *
invalid conversion from `const ushort*' to `const WCHAR*'

может в исходнике по капать? что там и как передается, причем здесь ushort* или WCHAR*
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 23.5.2025, 15:21