Pergunta

Eu ter convertido um aplicativo de modo MFC mista de VS2005 para VS2008. Ele está compilando OK, mas quando iniciar o aplicativo eu recebo uma declaração em AFXWIN1.INL porque AfxCurrentResourceHandle = NULL.

Este é antes MyCWinApp :: InitInstance é chamada. A pilha de chamadas é

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

O mesmo projeto no VS2005 inicia-se bem e eu notar que em vez de PostDllMain beeing chamado WinMainCRTStarup está sendo chamado e ele recebe um identificador de instância definida:

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

O aplicativo é compilado com clr / e links para ambos, bibliotecas e DLLs não gerenciados e mistos gerenciados.

Alguém pode lançar alguma luz sobre esta questão? Há alguma diferença conhecidos nesta área entre VS2005 e VS2008?

Obrigado!

Foi útil?

Solução

Eu tenho uma resposta agradável de Rong-Chun Zhang no fórum MSDN:

Olá,

I realizado um teste do meu lado, e eu não reproduzir o problema do meu lado. No entanto, a pilha de chamadas em Vsiaul Studio 2008 parece que é uma DLL, então eu tentei adicionar o _USRDLL na Proprocessor Definições (/ D "_USRDLL") das configurações do projeto, eu tenho a mesma afirmação como você descreveu. Verifique se o projeto é compilado com "_USRDLL".

Mais informação http://support.microsoft.com/kb/115088

Deixe-me saber se isso ajuda, se não, você poderia mostrar-nos a linha das configurações do projeto de comando?

Obrigado, Rong-Chun Zhang


Isto foi à direita na marca!

Acontece que um dos projectos na minha solução que está configurado como um lib estática teve _USRDLL definido em suas definições de pré-processador. De alguma forma, este é descartado no VS2005, mas VS2008 claramente não gosta disso.

Obrigado mr. Zhang!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top