我已经从VS2005转换混合模式MFC应用到VS2008。它编译OK,但启动应用程序,当我在AFXWIN1.INL得到一个断言,因为afxCurrentResourceHandle = NULL。

这是MyCWinApp :: InitInstance中被调用之前。调用堆栈是

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

在VS2005同样的项目启动了罚款和我注意到,而不是PostDllMain是beeing称为WinMainCRTStarup被调用,它得到了定义实例句柄:

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

应用程序是使用/ clr并链接到两个托管,非托管和混合库和DLL编译。

任何人都可以摆脱对这个问题的一些轻? 是否有VS2005和VS2008之间这一领域任何已知的差异?

谢谢!

有帮助吗?

解决方案

我从荣张春在MSDN论坛上一个不错的答案:

您好,

我在我的侧执行测试,而没在我的侧重现该问题。然而,在Vsiaul Studio 2008中调用堆栈看起来是一个DLL,所以我尝试添加_USRDLL在Proprocessor定义(/ d“_USRDLL”)的项目设置,我像你描述得到了相同的说法。请检查项目编译“_USRDLL”。

更多信息 http://support.microsoft.com/kb/115088

让我知道这会有所帮助,如果没有,请你告诉我们的项目设置的命令行?

谢谢, 荣春张


这是正确的标志!

原来,其被设置为一个静态库中我的解决方案的一个项目在其预处理器定义了_USRDLL定义。不知何故此被丢弃在VS2005但VS2008显然不喜欢它。

感谢您先生。张!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top