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


Автор: DubAlex 16.5.2006, 14:08
Есть проект, который при компиляции формирует DLL. И есть исполняющая программа для этой DLL. Код исполняющей программы изменять нельзя. В коде DLL выделяется память под массив: 
Код

arr =new Tarr[kolTelN]; 

Если исполняющую программу закрывают, то память должна освобождаться: 
Код
delete [] arr; 

Проблема в том, что я не знаю, куда вставить этот код с удалением (в DLL). 
Вопрос: Куда? 

Автор: SergeCpp 16.5.2006, 14:25
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/dllmain.asp

DLL_PROCESS_DETACH 

Автор: DubAlex 17.5.2006, 11:00
Цитата(SergeCpp @ 16.5.2006,  14:25)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/dllmain.asp

DLL_PROCESS_DETACH

Написал следующую функцию в файле cpp моей DLL:
Код

BOOL APIENTRY DllMain(HANDLE hModule, DWORD  fdwReason, LPVOID lpReserved)
{
    if(fdwReason==DLL_PROCESS_DETACH)
    {
        return TRUE; 
    }
    return FALSE;
}
 
Теперь появляется ошибка:
Код

nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in gsm.obj
nafxcwd.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in gsm.obj; second definition ignored
   Creating library Debug/dataserv.lib and object Debug/dataserv.exp
Debug/dataserv.dll : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

Как ее исправить? 

Автор: Earnest 17.5.2006, 12:43
Цитата(DubAlex @  17.5.2006,  12:00 Найти цитируемый пост)
Написал следующую функцию в файле cpp моей DLL:

Если до этого твоя DLL нормально работала, значит эта функция в ней уже была. А ты написал еще одну. Вот линкер тебе и говорит, что у функция DLLMain имеется в двух экземплярах.

Возможна ситуация, что где-то вставляется "инклудом" файл со стандартной реализацией DllMain - визард в некоторых случаях так делает. 

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