Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CLR и MFC очень надо 
:(
    Опции темы
xclock
  Дата 15.5.2008, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, помогите, пожалуйста, возникла следующая проблема:
Есть класс, который я писал, используя, библиотеки afxwin.h, afxdb.h.
При попытке запустить приложение CLR, с подключенными этими библиотеками, происходило следующие: 
1) Сначала вылезала такая ошибка:
“fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]”
Решение: #define _AFXDLL
2)Потом стали вылезать ошибки такого типа error C3641: DrawState’ : invalid calling convention ‘__stdcall ‘ for function compiled with /clrure or /clr:safe
Решение: project properties -> General -> Common Language Runtime c /clrure НА /clr
3) Ура, компиляция завершена, НО ((( при запуске вылетает эта ошибка:
_CrtIsValidHeapPointer(pUserData)

И тут я в тупике, как решить проблему, помогите, пожалуйста?
PM MAIL   Вверх
NovorosSupport
  Дата 15.7.2009, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

при запуске вылетает эта ошибка:
_CrtIsValidHeapPointer(pUserData)


В принципе, отладчик должен был показать место ошибки. По опыту могу сказать, проблема с динамическим распределением памяти. 
Например, когда есть две динамически выделенных области памяти, одна из которых B[] инициализируется адресом, пересекащимся с другой областью A[]. Всё впорядке до поры до времени. Однако во время выполнения программы после освобождения блока памяти А[] и при последующем освобождении или использовании блока B[] сгенерируется указанное исключение, т.к. программа пытается получить доступ к памяти, которая ей уже фактически не принадлежит.
На мой взгляд, если уж нужно интенсивно поработать с блоком А[], то помочь могут указатели. Однако и здесь нужно следить, когда была освобождена память А[].
Ещё один вариант - более позднее освобождение А[], что не всегда бывает оптимально.

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


 




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


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

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