Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > VERIFY strDocName


Автор: ASMerg 29.9.2006, 21:47
Всем привет!
Уже не помню когда начал бороться с этой проблеммой... Давно уже.
При запуске приложения вылетает ASSERT в CDocument* CSingleDocTemplate::OpenDocumentFile
Код
void CSingleDocTemplate::SetDefaultTitle(CDocument* pDocument)
{
    CString strDocName;
    if (!GetDocString(strDocName, CDocTemplate::docName) ||
        strDocName.IsEmpty())
    {
        // use generic 'untitled'
        VERIFY(strDocName.LoadString(AFX_IDS_UNTITLED)); //ТУТ АССЕРТ!!!
    }
    pDocument->SetTitle(strDocName);
}


Почему-то strDocName отстается пустой. И что больше всего меня пугает, это приосходит только если Use MFC in a Static Library. 
В дебаге вылетает АССЕРТ, а в релизе предложение отправить отчет об ошибке. Причем если запустить релиз из студии все ок, если экзешник - send error report.
И еще странно что ассерт вылетает только в 2002 студии, но экзешник вылетает собранный и 2002-ой, и 2003-ей студиями.
 
smile 

Автор: Earnest 30.9.2006, 10:55
Этот ASSERT Говорить всего лишь о том, что названная строка не найдена.
Что-то видимо не так с модулями ресурсов, раз она их то нахродит, то нет. Ну добавь в свой модуль строку с таким ид-ром и не мучайся.
Хотя данная ошибка может указывать и на более серьезную проблему...

Автор: ASMerg 30.9.2006, 11:35
Цитата(Earnest @  30.9.2006,  10:55 Найти цитируемый пост)
Хотя данная ошибка может указывать и на более серьезную проблему...

Например?

Автор: Earnest 2.10.2006, 15:48
Например, на ошибку в ДНК  smile 
Шучу. А серьезно - ну откуда я знаю? Множество ошибок, которое можно сделать, несчетно...

Но ошибка эта, скорее всего из другой серии. Если запустить поиск символа AFX_IDS_UNTITLED, то найдется он в стандартных ресурсах MFC, т.е. в твоем приложении его нет. А в cтатических библиотеках ресурсов не бывает. Скорее всего, при использовании MFC как статической библиотеки нужно стандартные ресурсы включать в свои, например инклудом. И наверняка где-нибудь об этом написано. Или визард, если ты сразу при создании проекта выбираешь использование статической библиотеки, сам включает стандартные ресурсы - может, просто копирует. Точно не знаю, потому как статически MFC не линкую.
Кстати, там много символов, так что впереди у тебя еще много ассертов. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)