Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QClipboard 
V
    Опции темы
zss
Дата 6.5.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



блин действительно бряк отработал. его вызвал код из comctrl32

А какого хрена он сам там себе вариться....
PM MAIL ICQ   Вверх
Любитель
Дата 6.5.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(zss @  6.5.2009,  15:16 Найти цитируемый пост)
comctrl32

А второй параметр чему равен при этом? И ещё - comctl32.dll для многих компонентов (ListView, TreeView, etc.) требует COM-а. Но вряд ли инициализация будет вызываться для многопоточной модели.. Вообщем надо разбиратсья smile А брякнулось один раз только?


--------------------
PM MAIL ICQ Skype   Вверх
zss
Дата 6.5.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Цитата(Любитель @  6.5.2009,  15:20 Найти цитируемый пост)
А брякнулось один раз только?

брякнула 2 раза.
Qt в отладке показала, что не отработал OleInitialize.
Причем весь прикол в том, что он сработал на QApplication().
В этот момент не создано ни одного моего объекта. Кто его вызывает - не понятно.

У меня есть конечно списки, но я их еще к этому моменту не создал.
PM MAIL ICQ   Вверх
Любитель
Дата 6.5.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Хм.. Ну, тяежло что-то конкретно сказать. Вообщем, проблема именно в том, что кто-то вызывает CoInitializeEx с флагом COINIT_MULTITHREADED. То, что это делается до создания QApplication - это нормально. В том плане, что инициализация OLE Qt производит именно там (qapplication_win.cpp, функция qt_init). Многопоточная модель для COM-а ставится где-то до этого. Причём, замечу ещё раз - дело не в вызове CoInitializeEx как таковом, а в его вызове с параметром COINIT_MULTITHREADED. Больше тяжело что-то сказать - надо дебажить и ворочать проект, искать причину бага. Могу тольк пожелать удачи smile


--------------------
PM MAIL ICQ Skype   Вверх
zss
Дата 6.5.2009, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Цитата(Любитель @  6.5.2009,  16:17 Найти цитируемый пост)
Хм.. Ну, тяежло что-то конкретно сказать. Вообщем, проблема именно в том, что кто-то вызывает CoInitializeEx с флагом COINIT_MULTITHREADED. То, что это делается до создания QApplication - это нормально. В том плане, что инициализация OLE Qt производит именно там (qapplication_win.cpp, функция qt_init). Многопоточная модель для COM-а ставится где-то до этого. Причём, замечу ещё раз - дело не в вызове CoInitializeEx как таковом, а в его вызове с параметром COINIT_MULTITHREADED. Больше тяжело что-то сказать - надо дебажить и ворочать проект, искать причину бага. Могу тольк пожелать удачи


блин - просто жопа.
Создал тестовый проект - там вообще нет вызовов.

А в моем проекте Olly показывает ссылку на 5 вызовов.
Единственное предположение - линкуется какая-то либа, которая при инициализации и дергает CoInitialize.

Ну не с нуля же проект переписывать smile
PM MAIL ICQ   Вверх
Любитель
Дата 6.5.2009, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Какие библиотеки тобой используются? Кроме Qt и Qwt.


--------------------
PM MAIL ICQ Skype   Вверх
zss
Дата 6.5.2009, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Цитата(Любитель @  6.5.2009,  16:23 Найти цитируемый пост)
Какие библиотеки тобой используются? Кроме Qt и Qwt.

boost

Добавлено через 25 секунд
но он уж точно не должен это делать smile
PM MAIL ICQ   Вверх
zss
Дата 6.5.2009, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Любитель, глядь

http://support.microsoft.com/kb/824480

как я и предполагал - это делают crt-либы

Добавлено через 13 минут и 54 секунды
только выставление описанных там свойств действия не возымела :(

Это сообщение отредактировал(а) zss - 6.5.2009, 22:07
PM MAIL ICQ   Вверх
Любитель
Дата 7.5.2009, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Эээ.. Там речь про Managed C++ Applications. У тебя разве С++/CLI? smile Если нет - то эта кб-шка непричём.


--------------------
PM MAIL ICQ Skype   Вверх
zss
Дата 7.5.2009, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Цитата(Любитель @  7.5.2009,  00:58 Найти цитируемый пост)
Эээ.. Там речь про Managed C++ Applications. У тебя разве С++/CLI? smile Если нет - то эта кб-шка непричём. 


ну вроде здесь про COM и чистый c++ & run-time
Код

When the common language runtime must use the Component Object Model (COM) any time before the user application starts, the common language runtime calls the CoInitializeEx method to initialize the main thread to the multi-threaded apartment (MTA). However, the common language runtime calls the CoInitializeEx method only as required. The common language runtime is not deterministic. Typically, applications that require a single-threaded apartment (STA) for the main thread must instead apply the STAThread attribute at the entry point. Also, in C++ the user entry point (main method and its variants) is not a true managed entry point. The C Run-Time Libraries supply the entry points for console applications and for windows applications.

PM MAIL ICQ   Вверх
zss
Дата 7.5.2009, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Любитель,
нашел

у меня есть библиотека в которой в *.cpp есть следующий глобальный код
Код

class CModule : public CAtlModuleT<CModule> {}
CAtlModule* _pAtlModule = new CModule();
 

в QT приложении я использую из этой библиотеки только описание, находящиеся в *.h
Но в *.h есть 
Код

#import "*.tlb" no_namespase, named_guids 


и этот гад всталяет код, который и вызывает CoInitializeEx cо значением COINIT_MULTITHREADED.
PM MAIL ICQ   Вверх
Любитель
Дата 7.5.2009, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



zss, я так и не понял - ты решил твою проблему? smile


--------------------
PM MAIL ICQ Skype   Вверх
zss
Дата 7.5.2009, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Цитата(Любитель @  7.5.2009,  19:37 Найти цитируемый пост)
zss, я так и не понял - ты решил твою проблему? 

да - вынес создание глобального _pAtlModule в конструктор использующего его класса

спасибо
PM MAIL ICQ   Вверх
Любитель
Дата 7.5.2009, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Ок. В следующий раз ставь, плиз, галку тогда, что вопрсо решён smile

Сейчас я поставил


--------------------
PM MAIL ICQ Skype   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1453 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.