powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / В приложении все нормально, а в DLL глючит!
3 сообщений из 3, страница 1 из 1
В приложении все нормально, а в DLL глючит!
    #34239202
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Я пишу на VS C++.NET
Написал я класс, производный от CEdit. Внутри этого класса я создаю и удаляю объект (создаю при обновлении информации, предварительно удалив предыдущий объект). Данный класс я отладил в диалоговом приложении, а потом решил вынести его в dll. Создал расширенную dll MFC, и после этого подключил к проекту (диалоговому приложению).
И вот тут начались глюки.
Ниже приведенный код срабатывает один раз, а во второй при удалении выдается ошибка (см. ниже).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
if (CurrentPtr!= 0 )//Это нужно для того, чтобы освободить память, которая была передана при создании объекта
		{
			delete CurrentPtr;
			CurrentPtr =  0 ;
		}
        CStringW Str=GetEditText();

		CurrentPtr = new SLStringWB(SLStringW(GetEditText()));

return  1 ;

Причем проверяю, объект существует – CurrentPtr не пустой указатель, но при удалении все равно выдается ошибка. Причем самое странное, что в обычном приложении (без dll) все работает нормально.

Что это такое, кто может помогите, как справиться с этим.

Заранее спасибо.
...
Рейтинг: 0 / 0
В приложении все нормально, а в DLL глючит!
    #34239853
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Homosum пишет:

> потом решил вынести его в dll. Создал расширенную dll MFC, и после этого
> подключил к проекту (диалоговому приложению).\

НЕ НАДО делать dll MFC extention. Это очень вредно.
Делайте просто DLL.

> Причем проверяю, объект существует - CurrentPtr не пустой указатель, но
> при удалении все равно выдается ошибка. Причем самое странное, что в
> обычном приложении (без dll) все работает нормально.
>
> Что это такое, кто может помогите, как справиться с этим.

Скорее всего у вас в приложении используется несколько MSVCRTL.
Возможно одна статическая, другая - DLL, или одна MT, другая - нет.

Все модули (*.exe & *.dll) должны использовать ОДИНАКОВЫЕ CRTL
при генерации кода и в итога CRTL должна быть одна.
Как правило используют Multi-threaded DLL. Статические CRTL
вообще нельзя использовать, если есть более одного модуля,
например, одна .EXE и одна .DLL , потому что это автоматом
влечет за собой наличие нескольких CRTL (в каждом модуле).
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
В приложении все нормально, а в DLL глючит!
    #34240179
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv Вы действительно мастер! Я не все понял, но главное получилось. У меня эта dll использует другие dll, а они были собраны со статической MFC, я все эти библиотеки перевел в режим использования внешней MFC библиотеки и все заработало как надо. Большое Вам спасибо. Со светлым праздником Рождества Вас и всех участников форума.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / В приложении все нормально, а в DLL глючит!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]