从自身卸载DLL(Embarcadero C ++)

时间:2018-03-27 08:33:20

标签: c++

我有连接到EXE的DLL并在那里工作。 Exe不是我的程序。我的DLL只是创建了VCL子窗体。例如,用户关闭了我的子窗体之后,是从EXE卸载我的dll的方法吗?

我试图通过创建线程并执行FreeLibraryAndExitThread来卸载我自己的DLL,但是获得了访问冲突。

我试图在DLL_PROCESS_ATTACH之后卸载dll:

#include <vcl.h>
#include <windows.h>
#include <process.h>
#include <vector>

DWORD WINAPI Eject(LPVOID Param) {

    ShowMessage("EJECT");
    FreeLibraryAndExitThread(HINSTANCE(Param), 0);
    return 1;

}

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
    switch(reason) {

        case DLL_PROCESS_ATTACH: {

            ShowMessage("ATTACH");
            CreateThread(NULL,NULL,Eject,hinst,NULL,NULL);
            break;

        }
    }


    return 1;
}

ShowMessage("EJECT");我的应用程序崩溃后。

是从自己卸载dll的方法吗?

0 个答案:

没有答案