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


Автор: Competitor 27.2.2009, 15:49
Привет всем,
есть в солюшене проект MFC DLL (с опцией Use MFC in a Shared DLL).
Линкую статически эту длл в свой основной проект. В дебаг версии всё работает нормально, а вот в релизе ДЛЛ не грузится автоматически, ни InitInstance, ни сам конструктор вообще не вызываются. Т.е. я прописал в Additional dependenices свою дллку и в InitInstance этой дллки у меня должны выполняться определенные действия, так вот в релизе туда управление просто не передается.
Пока сделал так:
Код

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
#ifndef _DEBUG
    ::LoadLibrary(_T("MyMFCDLL.dll"));
#endif

т.е. в релизе линкую длл динамически, в этом случае InitInstance этой длл вызывается, всё работает как полагается.
Но хотелось бы узнать, из-за чего в релизе длл сама не линкуется, если к ней не обращаться

Автор: Earnest 27.2.2009, 17:59
Депенденсов мало, чтобы библиотека автоматически грузилаь. Нужно, чтобы линкер ее действительно требовал - т.е. были к ней какие-то обращения из кода приложения или других загружаемых DLL. Почему она у тебя в дебаге грузится - непонятно, модет, есть какие-то вызовы, которые только в DEBUG? 
А вообще, если DLL нужна только как доп. модуль, а не для разрешения ссылок, то самое то загружать ее через LoadLibrary. Можно, конечно, какой-то "левый" вызов сделать, типа InitMyLibrary, вызываемый из exe, но зачем? 

Автор: aram90 27.2.2009, 20:57
Думаю в релизе не грузится, потому что если нет обращений в библиотеку, то релиз не включает его вообще, даже в том
случае, если они есть в коде, но никогда не будут выполнены.

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