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
반응형
'Program Language > C & C++' 카테고리의 다른 글
[C++] shared_ptr의 잘못된 사용 (0) | 2022.07.27 |
---|---|
[C++] 디버깅 모드 종료 시 메시지 (0) | 2022.07.27 |
[C++] 자료형 타입 확인하기 (0) | 2022.07.14 |
[C++] async로 간단하게 thread 만들기 (0) | 2022.07.08 |
[C++] GetProcAddress가 nullptr을 Return 할 때, (0) | 2022.07.01 |