Russian Qt Forum
Май 02, 2024, 12:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4 5   Вниз
  Печать  
Автор Тема: SingleApplication (qt4.4)  (Прочитано 57747 раз)
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #15 : Июнь 08, 2008, 00:02 »

include (singleapplication.pri)
в прошнике

сделал и теперь получаю:
Код:
1>------ Build started: Project: JulyView, Configuration: Release Win32 ------
1>RCC julyview.qrc
1>MOC singleapplication.h
1>MOC julyview.h
1>Compiling...
1>qrc_julyview.cpp
1>moc_singleapplication.cpp
1>.\Release\moc_singleapplication.cpp(47) : warning C4273: 'staticMetaObject' : inconsistent dll linkage
1>        c:\julyview\julyview\release\../singleapplication.h(33) : see previous definition of 'public: static QMetaObject const SingleApplication::staticMetaObject'
1>.\Release\moc_singleapplication.cpp(47) : error C2491: 'SingleApplication::staticMetaObject' : definition of dllimport static data member not allowed
1>.\Release\moc_singleapplication.cpp(53) : warning C4273: 'SingleApplication::metaObject' : inconsistent dll linkage
1>        c:\julyview\julyview\release\../singleapplication.h(33) : see previous definition of 'metaObject'
1>.\Release\moc_singleapplication.cpp(58) : warning C4273: 'SingleApplication::qt_metacast' : inconsistent dll linkage
1>        c:\julyview\julyview\release\../singleapplication.h(33) : see previous definition of 'qt_metacast'
1>.\Release\moc_singleapplication.cpp(66) : warning C4273: 'SingleApplication::qt_metacall' : inconsistent dll linkage
1>        c:\julyview\julyview\release\../singleapplication.h(33) : see previous definition of 'qt_metacall'
1>.\Release\moc_singleapplication.cpp(85) : warning C4273: 'SingleApplication::messageReceived' : inconsistent dll linkage
1>        c:\julyview\julyview\release\../singleapplication.h(41) : see previous definition of 'messageReceived'
1>moc_julyview.cpp
1>main.cpp
1>julyview.cpp
1>Generating Code...
1>Build log was saved at "file://c:\JulyView\JulyView\release\BuildLog.htm"
1>JulyView - 1 error(s), 5 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #16 : Июнь 08, 2008, 12:52 »

Попробывал скомпилить у себя. В проекте явно какой-то бок с макросами импорта\экспорта. Разбираться времени нет.

Shared: либа собралась, не собираеться экзампл
Static: собралась и либа и экзампл, но наблюдаеться излишний наворот. Получается example.exe + example.lib (последнее не есть правильно)

Qt 4.4.0, VS2005
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #17 : Июнь 08, 2008, 16:56 »

Получилось поправить:

отредактировал singleapplication.h

блок

Код:
#ifdef Q_OS_WIN
# ifdef SINGLE_APPLICATION_DLL
# ifdef SINGLE_APPLICATION_BUILD_LIB
# define SINGLE_APPLICATION_EXPORT Q_DECL_EXPORT
# else
# define SINGLE_APPLICATION_EXPORT Q_DECL_IMPORT
# endif
# endif
#endif
#ifndef SINGLE_APPLICATION_EXPORT
# define SINGLE_APPLICATION_EXPORT
#endif

заменил на

Код:
#ifdef Q_OS_WIN
# ifdef SINGLE_APPLICATION_DLL
# ifndef SINGLE_APPLICATION_BUILD_LIB
# define SINGLE_APPLICATION_EXPORT Q_DECL_EXPORT
# else
# define SINGLE_APPLICATION_EXPORT Q_DECL_IMPORT
# endif
# endif
#endif
#ifndef SINGLE_APPLICATION_EXPORT
# define SINGLE_APPLICATION_EXPORT
#endif

и теперь все работает
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #18 : Июнь 09, 2008, 00:37 »

Эта поправка не есть правильной
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ритт
Гость
« Ответ #19 : Июнь 10, 2008, 02:40 »

Получилось поправить:

отредактировал singleapplication.h

блок

Код:
#ifdef Q_OS_WIN
# ifdef SINGLE_APPLICATION_DLL
# ifdef SINGLE_APPLICATION_BUILD_LIB
# define SINGLE_APPLICATION_EXPORT Q_DECL_EXPORT
# else
# define SINGLE_APPLICATION_EXPORT Q_DECL_IMPORT
# endif
# endif
#endif
#ifndef SINGLE_APPLICATION_EXPORT
# define SINGLE_APPLICATION_EXPORT
#endif

заменил на

Код:
#ifdef Q_OS_WIN
# ifdef SINGLE_APPLICATION_DLL
# ifndef SINGLE_APPLICATION_BUILD_LIB
# define SINGLE_APPLICATION_EXPORT Q_DECL_EXPORT
# else
# define SINGLE_APPLICATION_EXPORT Q_DECL_IMPORT
# endif
# endif
#endif
#ifndef SINGLE_APPLICATION_EXPORT
# define SINGLE_APPLICATION_EXPORT
#endif

и теперь все работает

а собирал статиком?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #20 : Июнь 10, 2008, 13:25 »

Я шас немного переделал файлы конфигурации и все работает отлично. Избавился от всех мной вышеперечисленных проблем. Константин, если тебе интересно я код выложу.

ЗЫ: Проверял под Linux, Win, Qt 4.4.0
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ритт
Гость
« Ответ #21 : Июнь 11, 2008, 02:19 »

интересно
скинь на мыло или сюда прилепи - обновлю тарболл и перезалью
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #22 : Июнь 11, 2008, 13:27 »

Пробуй собрать у себя
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #23 : Июнь 13, 2008, 12:54 »

Пробуй собрать у себя

Собрал, оно DLL просит носить с ехе файлом.
А можно както без етого ?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #24 : Июнь 13, 2008, 14:23 »


Собрал, оно DLL просит носить с ехе файлом.
А можно както без етого ?

В config.pri выбери статик:

Код:
LIB_CONFIG = staticlib
#LIB_CONFIG = dll
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #25 : Июнь 13, 2008, 16:24 »


Собрал, оно DLL просит носить с ехе файлом.
А можно както без етого ?

В config.pri выбери статик:

Код:
LIB_CONFIG = staticlib
#LIB_CONFIG = dll

Спасибо!
Записан
ритт
Гость
« Ответ #26 : Июнь 19, 2008, 11:22 »

пастор, благодарствую.

вот появилось время - подправил проекты
протестируйте сборку под вс, пожалуйста
« Последнее редактирование: Июнь 19, 2008, 14:18 от Константин » Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #27 : Июнь 19, 2008, 13:06 »

пастор, благодарствую.

вот появилось время - подправил проекты
протестируйте сборку под вс, пожалуйста

Проверил под VS2005 + Qt 4.4.0. Появились теже проблемы что и были до моих фиксов.

1. В шареде либа не собираеться:


Цитировать
Generating Code...
        link /LIBPATH:"d:\Projects\Libraries\Qt\4.4.0_vs2005\lib" /NOLOGO /INCRE
MENTAL:NO /DLL /OUT:..\bin\singleapplication.dll @C:\DOCUME~1\pastor\LOCALS~1\Temp\nm6C.tmp
LINK : fatal error LNK1181: cannot open input file 'singleapplication.lib'
NMAKE : fatal error U1077: 'link' : return code '0x49d'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.

2. В статике либа собираеться, но для экзамплов создаёться и *.exe и *.lib
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ритт
Гость
« Ответ #28 : Июнь 19, 2008, 13:11 »

ага, уже понял, что поторопился выкладывать
где-то запутался - с рабочим проектом тоже не собирается
разберусь - выложу опять
« Последнее редактирование: Июнь 19, 2008, 14:20 от Константин » Записан
ритт
Гость
« Ответ #29 : Июнь 19, 2008, 14:20 »

никто так и не сказал нормально ли собирается под студией

упд:
/* странно, что у нас нет раздела по вопросам потокового программирования */
баловался с примером тривиал и заметил такую штуку: если серверный экземпляр закрыть сразу после получения сообщения, в консоли можно увидеть следующее:
Цитировать
warning: QThread: Destroyed while thread is still running
в количестве, равном количеству запусков клиентских экземпляров.

вроде бы, из ворнинга всё ясно, но я что-то запутался...
Код:
LocalThread::LocalThread(quintptr socketDescriptor, const QString& name, QObject* parent) : QThread(parent)
{
this->socketDescriptor = socketDescriptor;
this->name = name;
}

LocalThread::~LocalThread()
{
}

void LocalThread::run()
{
QLocalSocket socket;
if(!socket.setSocketDescriptor(socketDescriptor) || socket.state() != QLocalSocket::ConnectedState)
return;

// send app_id to client
if(!writeMessage(&socket, name))
return;

// wait to messages from client
while(socket.state() == QLocalSocket::ConnectedState)
{
if(socket.waitForReadyRead(1000))
{
// ...
}
}
}
видимо, в момент разрушения поток ещё отрабатывает условный цикл...хоть клиент и умер уже пару секунд назад и сокет должен быть разорван...
наверное, стоит ввести ивентлуп в LocalThread?
« Последнее редактирование: Июнь 24, 2008, 02:08 от Константин » Записан
Страниц: 1 [2] 3 4 5   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 22.