여러 동적 연결 라이브러리의 솔루션에서 힙 손상은 기본적으로 하나의 단일 라이브러리 "MyLibrary.dll"을 사용하여 매번 발생하지만 "MyOtherLibrary.dll"에 대해서는 말할 수 없습니다. 코드의 관련 부분 :FreeLibrary 후의 힙 손상?
HINSTANCE hModule;
hModule = LoadLibrary("MyLibrary.dll");
// hModule is checked and definitely valid
if(hModule)
{
FreeLibrary(hModule); // HeapCorruption occurs now, but ONLY for "MyLibrary.dll"
}
정말 잘못 무슨 일이 일어나고 있는지 알아낼 수 없습니다. 그것은 나에게 VS 프로젝트 설정에서 뭔가를 변경해야하지만 난 아무런 단서도 변경하거나 무엇을 이유가없는 것 같습니다. 도서관 안의 코드 조각 일 수 있습니까?
추가 정보 : "MyLibrary.dll"프로젝트는 CMake 2.8로 작성되었으며 Visual Studio 2010 SP1 ("MyOtherLibrary.dll"프로젝트)에도 성공적으로 빌드됩니다.
아무도 도와 줄 수 있습니까?
그 시점에서 힙 손상이 발생했음을 어떻게 식별합니까? – sharptooth
첫 번째 포인트 - 다중 호출을 피하기 위해'FreeLibrary' 다음에'hModule = NULL'을 설정하십시오. –
MyLibrary.dll에 DllMain에 "재미있는"코드가 있습니까? DllMain은 악명 높게 제한적인 곳입니다. – Dialecticus