Program Language/C & C++

[C++] Dll Unloading 시 Kernel32.dll 에러

야곰야곰+책벌레 2022. 7. 26. 16:53
728x90
반응형

Dll을 LoadLibrary 이후, 프로그램을 닫을 때 Kernel32.dll 쪽에 access violation error 가 발생한다.

특정 Dll은 발생하고 또 특정 Dll은 발생하지 않는다.

 App - implicit Link - Explicit Link로 구성했는데, 프로그램 종료를 진행하면 App Closing 보다 Dll이 먼저 닫혀 버리는 것 같다. 소멸자의 FreeLibrary를 주석 처리하니 제대로 동작한다.

 

그리고 찾아보니 dll은 스스로 unloading 할 수 있는 방법이 없다는 것이다. FreeLibrary를 사용하면 래퍼런스 카운트가 0이 되어 FreeLibrary는 성공하지만 리턴하는 영역이 이미 해제된 영역이라 crash가 발생하게 된다는 것이다.

 

몇 시간 헤매고 또 하나 해결하고 알아간다.

728x90
반응형