Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вызов AfxGetInstanceHandle из .dll 
:(
    Опции темы
_hunter
  Дата 21.9.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



Добрый день.

Есть такая проблема: в своем приложении использую стороннюю бибилиотеку (TurboDLL с CodeProject' а (исходники, если что, есть)). Для этого к проекту линкую .lib' у, которая вызывает .dll. В конструкторе одного из классов (CTreeListHeaderCtrl) есть вызов AfxGetInstanceHandle который кидает assertion из afxwin1.inl по причине afxCurrentInstanceHandle == NULL

Это как-то можно побороть?

С уважением...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Damarus
Дата 21.9.2006, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 6
Всего: 29



Я такое видел, когда обьект класса был глобальным. Конструктор глобального обьекта вызывается ещё до того, как afxCurrentInstanceHandle будет инициализирован.
PM MAIL ICQ Jabber   Вверх
_hunter
Дата 21.9.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



тут он не глобальный. цепочка вызовов идет из InitDialog основного диалога


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Earnest
Дата 21.9.2006, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Как я понимаю, библиотека на MFC написана?
Какая она: Extension или Regular?
Для работы с Regular нужны дополнительные притопы и прихлопы: AFX_MANAGE_STATE нужно вставлять в каждой экспортируемой функции... Может по-этому у тебя проблемы...
Мне кажется, раз исходный код есть, проще ее (библиотеку) пересобрать как Extension, если нет каких-то противопоказаний. 


--------------------
...
PM   Вверх
_hunter
Дата 21.9.2006, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



Цитата(Earnest @  21.9.2006,  19:07 Найти цитируемый пост)
Мне кажется, раз исходный код есть, проще ее (библиотеку) пересобрать как Extension, если нет каких-то противопоказаний. 

я только за. только что для этого делать нужно?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Earnest
Дата 21.9.2006, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Сделай новый проект (можно прямо в своем солюшене, чтобы сама подключалась), выбери MFC DLL и там где-то еще нужно выбрать Extension DLL. Потом добавь все файлы (кроме тех, где DLLMain или что там у них), короче все файлы с кодом классов.
Файл с ресурсами (RC, если есть) просто замени на тот, который из библиотеки. Ну и не забыть про resource.h и всякие дополнительные иконки-картинки-курсоры (если есть, опять же).



--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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