문제

혼합 모드 MFC 응용 프로그램을 VS2005에서 VS2008로 변환했습니다. 괜찮은 컴파일이지만 응용 프로그램을 시작할 때 afxCurrentResourceHandle = null이기 때문에 AFXWIN1.inl에서 ASSERT를 얻습니다.

이것은 mycwinapp :: initinstance가 호출되기 전입니다. 통화 스택은입니다

mfc90d.dll->AfxWinInit (with HINSTANCE = NULL)
myapp.exe!InternalDllMain
myapp.exe!PostDllMain
myapp.exe!dynamic intilizer for postDllMain::A0x61ae6c8e

VS2005의 동일한 프로젝트가 정상적으로 시작되며 WinMaincrtStarup이라는 Postdllmain Beeing 대신에 전화가 호출되고 정의 된 인스턴스 핸들이 나타납니다.

mfc80d.dll!AfxWinInit (with HINSTANCE = 0x0040000)
mfc80d.dll!AfxWinMain
myApp.exe!WinMain
myApp.exe!__tmainCRTStartup
myapp.exe!WinMainCRTStartup

이 앱은 /clr로 컴파일되며 관리, 관리되지 않고 혼합 된 LIB 및 DLL에 대한 링크입니다.

누구 든지이 문제에 대해 약간의 빛을 발할 수 있습니까? VS2005와 VS2008 사이 에이 영역에 알려진 차이가 있습니까?

감사!

도움이 되었습니까?

해결책

MSDN 포럼에서 Rong-Chun Zhang으로부터 좋은 답변을 얻었습니다.

안녕하십니까,

나는 내 편에서 테스트를 수행했고, 나는 내 옆에 문제를 재현하지 않았다. 그러나 VSIAUL Studio 2008의 통화 스택은 DLL 인 것처럼 보이므로 프로젝트 설정의 프로위서 정의 (/d "_usrdll")에 _usrdll을 추가하려고 시도했습니다. 설명과 동일한 주장을 받았습니다. 프로젝트가 "_usrdll"으로 컴파일되어 있는지 확인하십시오.

추가 정보http://support.microsoft.com/kb/115088

이것이 도움이된다면 프로젝트 설정의 명령 줄을 보여 주시겠습니까?

고마워요, Rong-Chun Zhang


이것은 마크에 맞았습니다!

정적 LIB로 설정된 내 솔루션의 프로젝트 중 하나는 _usrdll이 전처리 서자 정의에 정의되어 있음을 알 수 있습니다. 어쨌든 이것은 vs2005에서 폐기되지만 vs2008은 분명히 그것을 좋아하지 않습니다.

감사합니다. 장!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top