Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > вызов AfxGetInstanceHandle из .dll |
Автор: _hunter 21.9.2006, 13:08 |
Добрый день. Есть такая проблема: в своем приложении использую стороннюю бибилиотеку (TurboDLL с CodeProject' а (исходники, если что, есть)). Для этого к проекту линкую .lib' у, которая вызывает .dll. В конструкторе одного из классов (CTreeListHeaderCtrl) есть вызов AfxGetInstanceHandle который кидает assertion из afxwin1.inl по причине afxCurrentInstanceHandle == NULL Это как-то можно побороть? С уважением... |
Автор: Damarus 21.9.2006, 14:41 |
Я такое видел, когда обьект класса был глобальным. Конструктор глобального обьекта вызывается ещё до того, как afxCurrentInstanceHandle будет инициализирован. |
Автор: _hunter 21.9.2006, 15:33 |
тут он не глобальный. цепочка вызовов идет из InitDialog основного диалога |
Автор: Earnest 21.9.2006, 19:07 |
Как я понимаю, библиотека на MFC написана? Какая она: Extension или Regular? Для работы с Regular нужны дополнительные притопы и прихлопы: AFX_MANAGE_STATE нужно вставлять в каждой экспортируемой функции... Может по-этому у тебя проблемы... Мне кажется, раз исходный код есть, проще ее (библиотеку) пересобрать как Extension, если нет каких-то противопоказаний. |
Автор: Earnest 21.9.2006, 19:21 |
Сделай новый проект (можно прямо в своем солюшене, чтобы сама подключалась), выбери MFC DLL и там где-то еще нужно выбрать Extension DLL. Потом добавь все файлы (кроме тех, где DLLMain или что там у них), короче все файлы с кодом классов. Файл с ресурсами (RC, если есть) просто замени на тот, который из библиотеки. Ну и не забыть про resource.h и всякие дополнительные иконки-картинки-курсоры (если есть, опять же). |