![]() |
|
![]() ![]() ![]() |
|
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
что-то ни хрена не пашет
новое значение не выставляется. А если попытать прочитать, то остается старое, вставленное из Windows |
|||
|
||||
Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Вот так работает. В твоем случае не инициализируется буффер обмена для твоего приложения
|
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
А у меня всё работает:
|
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
что значит не инициализируется ? Он создается при создании приложения, а значет должен инициализироваться странно - у меня тоже отработал. А почему же не в main не работает |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
QApplication должен предшествовать всему прочему.
|
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
ну так и и есть main.cpp
|
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
ну в общем голову сломал, а как его победить - не понятно :(
|
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Ну ты же не выкладываешь полный компилируемый проект, как тебе помочь не понятно.
|
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
||||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Ну попробуй пихать работу с буффером в разные места программы. Варьировать варианты текста - английский/русский/уникод/не уникод. В главном потоке, в дочернем потоке (если таковые имеются). Включить отладку, смотреть в консоль, может ошибки пишутся какие. Запускать на разных компьютерах. Пробовать разные версии Qt. Разные сборки. Разные компиляторы. Пробуй удалять независимые куски кода до тех пор, пока не локализуешь место из-за которого программа не работает.
|
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
так весь прикол в том, что он уже в main не работает ![]()
может какие настройки проекта? Да они не должны влиять на это... |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Может он уже затирается до того момента, где ты его начинаешь использовать?
|
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
||||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Попробуй его использовать после app.exec, может какая-то завязка на eventloop есть.
|
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
||||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Блин - перелопатил весь проект. Я использую графики из QWT. И как только их подключаю - clipboard перестает работать.
Посмотрел исходники - вроде qwt не использует его. Что же он такое может делать ? |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Что значит подключаю? Достаточно линковки с QWT? Или создание какого-то виджета? Вообще, странная проблема, конечно... Прям интересно стало ![]() |
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
||||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
в общем я так и не понял что происходит, но у меня через 2 часа работы GUI сходит с ума.
Причем память не течет. Единственное что удалось получить - некоторые ошибки при запуске приложения. 1. Qt: Could not initialize OLE (error 80010106) 2. QClipboard::setMimeData: Failed to set data on clipboard () ... 3. Error disconnect to signal |
|||
|
||||
Любитель |
|
||||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Хм.. 80010106? MSDN говорит про это:
Функция OleInitialize инициализирует COM с STA моделью:
Отсюда вывод - где-то у тебя вызывается инициализация COM-системы с заданием многопоточной модели. Осталось выяснить где ![]() Это сообщение отредактировал(а) Любитель - 6.5.2009, 13:03 |
||||
|
|||||
zss |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
блин.... у меня используется библиотека, в которой описаны классы для работы с COM
неужели в этом проблема ? 1. к чему может привести ошибка инициализации OLE для QT ? 2. а подружить их нельзя ? |
||||
|
|||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
А как создаются объекты этого класса? T задаётся когда-нибудь явно?
|
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
||||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Всмысле не вызывается? Если у тебя создаются объекты вышеприведённого класса - то вызывается. Вопрос - с каким аргументом. С тем, что в шаблоне по дефолту стоит - проблем вызвать не должно. Проблема должны появится после COINIT_MULTITHREADED
![]() Qwt, как показала проверка, вообще COM не использует (зачем он ей?). Так что посмотри по всем используемым библиотекам и по твоему коду - где вызывается инициализация COM. Ну, в частности к тому что клипборд работать не будет. STA и MTA в пределах одного процесса - нельзя. Почти никак (создание отдельны длл-ок, и маршалинг данных в/из неё выходит, я думаю, за рамки этого раздела). Для клипборда необходима STA модель. Следовательно лучшим решением будет избавление от мультипоточной COM-модели. |
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
инменно не вызывается. Те классы где этот код используется не создаются. знать бы как ![]() вот output
Это сообщение отредактировал(а) zss - 6.5.2009, 13:32 |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Различные варианты. Например, просто поиск по исходникам ![]() ЗЫ Плагины непричём. Так Qt работает просто. |
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
в общем CoInitialize вызывается только в конструкторе этого класса.
Сделал его не шаблонным и поставил бряк на конструктор. Кроме как конструктору его вызывать некому. Бряк не отработал, а инициализация все-равно нарушена :( Блин... я уже несколько дней убил на это... |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
zss, а ты не можешь проект выложить?
|
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
он очень большой и тянет за собой кучу сторонних библиотек. Я пытался сначала тестовый создать - не получилось добиться такой же ошибки. После попытался с нуля данного проекта отследить когда это происходить - тоже не получилось. Ошибка не систематическая. Проверял все ключи проектов и используемых библиотек - вроде все в порядке Добавлено через 55 секунд QT чтоли переварить... Она коммерческая и я ее не варил |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Ладно, пойдём другим путём
![]() |
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
блин действительно бряк отработал. его вызвал код из comctrl32
А какого хрена он сам там себе вариться.... |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
А второй параметр чему равен при этом? И ещё - comctl32.dll для многих компонентов (ListView, TreeView, etc.) требует COM-а. Но вряд ли инициализация будет вызываться для многопоточной модели.. Вообщем надо разбиратсья ![]() |
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
брякнула 2 раза. Qt в отладке показала, что не отработал OleInitialize. Причем весь прикол в том, что он сработал на QApplication(). В этот момент не создано ни одного моего объекта. Кто его вызывает - не понятно. У меня есть конечно списки, но я их еще к этому моменту не создал. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Хм.. Ну, тяежло что-то конкретно сказать. Вообщем, проблема именно в том, что кто-то вызывает CoInitializeEx с флагом COINIT_MULTITHREADED. То, что это делается до создания QApplication - это нормально. В том плане, что инициализация OLE Qt производит именно там (qapplication_win.cpp, функция qt_init). Многопоточная модель для COM-а ставится где-то до этого. Причём, замечу ещё раз - дело не в вызове CoInitializeEx как таковом, а в его вызове с параметром COINIT_MULTITHREADED. Больше тяжело что-то сказать - надо дебажить и ворочать проект, искать причину бага. Могу тольк пожелать удачи
![]() |
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
блин - просто жопа. Создал тестовый проект - там вообще нет вызовов. А в моем проекте Olly показывает ссылку на 5 вызовов. Единственное предположение - линкуется какая-то либа, которая при инициализации и дергает CoInitialize. Ну не с нуля же проект переписывать ![]() |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Какие библиотеки тобой используются? Кроме Qt и Qwt.
|
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
||||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Любитель, глядь
http://support.microsoft.com/kb/824480 как я и предполагал - это делают crt-либы Добавлено через 13 минут и 54 секунды только выставление описанных там свойств действия не возымела :( Это сообщение отредактировал(а) zss - 6.5.2009, 22:07 |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Эээ.. Там речь про Managed C++ Applications. У тебя разве С++/CLI?
![]() |
|||
|
||||
zss |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
ну вроде здесь про COM и чистый c++ & run-time
|
||||
|
|||||
zss |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Любитель,
нашел у меня есть библиотека в которой в *.cpp есть следующий глобальный код
в QT приложении я использую из этой библиотеки только описание, находящиеся в *.h Но в *.h есть
и этот гад всталяет код, который и вызывает CoInitializeEx cо значением COINIT_MULTITHREADED. |
||||
|
|||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
zss, я так и не понял - ты решил твою проблему?
![]() |
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
||||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Ок. В следующий раз ставь, плиз, галку тогда, что вопрсо решён
![]() Сейчас я поставил |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, 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. |