вот сейчас действительно падает...

shadow7256
Уже с Приветом
Posts: 9392
Joined: 18 Mar 2004 15:11
Location: New York -> FL

вот сейчас действительно падает...

Post by shadow7256 »

Опять падает аппликация, на этот раз абслютно не понимаю почему. Дебаг работает нормально, релиз валится. Включил дебаговую инфу в релиз и вот что показал стек после того как упал...

feeefeee()

_AFX_CTL3D_THREAD::~_AFX_CTL3D_THREAD(_AFX_CTL3D_THREAD * const 0x00146a90) line 41

_AFX_CTL3D_THREAD::`scalar deleting destructor'(_AFX_CTL3D_THREAD * const 0x00146a90, unsigned int 1) + 8 bytes

CThreadSlotData::FreeSlot(CThreadSlotData * const 0x00146a90, int 3) line 240

CThreadLocalObject::~CThreadLocalObject(CThreadLocalObject * const

0x00146a90 {CThreadLocalObject}) line 427

TTN! _c_exit + 104 bytes

TTN! exit + 13 bytes

TTN! WinMainCRTStartup + 233 bytes

KERNEL32! 77e814c7()


Понятия не имею что такое _AFX_CTL3D_THREAD :pain1: Может кто подкинет идейки? Видно что падает после выхода из главной фукнции уже..
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Re: вот сейчас действительно падает...

Post by Strannik223 »

shadow7256 wrote:Опять падает аппликация, на этот раз абслютно не понимаю почему. Дебаг работает нормально, релиз валится. Включил дебаговую инфу в релиз и вот что показал стек после того как упал...
...
Понятия не имею что такое _AFX_CTL3D_THREAD :pain1: Может кто подкинет идейки? Видно что падает после выхода из главной фукнции уже..


По моему WinMainCRTStartup != WinMain то есть на самом деле до функции main дело еще не доходит.
Я бы проверил не делается ли чего подозрительного в конструкторах статических объектов потому что именно они вызываются до выполнения main()
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

Мой пойнт - че то у Вас там линкуется разное - что синглетред, чтото малтитред.
Верить нельзя никому - даже себе. Мне - можно!
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

A. Fig Lee wrote:Мой пойнт - че то у Вас там линкуется разное - что синглетред, чтото малтитред.


CThreadLocalObject наводит тебя на такие размышления?
Так дело в том что ему вызывается деструктор. То есть конструктор был вызван успешно.

Code: Select all

3 TTN! exit + 13 bytes
2 TTN! WinMainCRTStartup + 233 bytes
1 KERNEL32! 77e814c7()


Итак: 1 - операционка запускает executable.
2 - Загрузив имидж и слинковав его ОС вызывает WinMainCRTStartup который должен инициилизировать все и вызвать WinMain(). Но как мы видим в процессе инициализации ему плохеет и все что мы видим далее есть вываливание из программы и к предмету разбирательсва оношение вряд ли имеет.
Никакой разрухи нет. (с) Проф. Преображенский.
shadow7256
Уже с Приветом
Posts: 9392
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Post by shadow7256 »

Вот когда это происходит.

Если я линкую МФС библиотеку к проекту как Shared DLL, то проблем нет. Как только линкую как Static LIB, то начинают сразу вылазить сообщения типа:

msvcprt.lib(MSVCP60.dll) : error LNK2005: "private: void __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::_Tidy(bool)" (?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEX_N@Z) alread
y defined in AppSettings.obj

Если я вписываю библиотеки в игнор список, то ошибки исчезают, но приложение крашится при закрытии.

Может МФС борется с ран тайм библиотекой?
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

Я уже слабо помню, но по моему есть какой-то #define в коде которая студия генерит, который зависит от того как линкуется MFC dll.
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
AIDS
Уже с Приветом
Posts: 251
Joined: 13 Oct 1999 09:01
Location: United Kingdom

Post by AIDS »

А как у вас линкуется C- RunTime Library?
Похоже что динамически. Если вы используете MFC, то линкуйте C- RunTime Library также как и MFC..
shadow7256
Уже с Приветом
Posts: 9392
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Post by shadow7256 »

AIDS wrote:А как у вас линкуется C- RunTime Library?
Похоже что динамически. Если вы используете MFC, то линкуйте C- RunTime Library также как и MFC..


а как узнать как линкуется CRT library?
User avatar
AIDS
Уже с Приветом
Posts: 251
Joined: 13 Oct 1999 09:01
Location: United Kingdom

Post by AIDS »

А в настройках проекта посмотреть? :)
В VC++ 6.0 - меню Project\Settings кажется
на закладке C/C++->Code Generation->Runtime library,
там будет combo-box с типами RTL - single threaded static, multithreaded static, multithreaded DLL (и ихDebug варианты).
В VC++ 7.1 (.Net 2003) - меню Project\ Properties, C/C++->Code Generation->Runtime library,

RTFM :-)
shadow7256
Уже с Приветом
Posts: 9392
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Post by shadow7256 »

А если про это, то конечно статически линкуется все. Придется глубже где то копать..

Return to “Вопросы и новости IT”