aplicação mista modo MFC não inicializar corretamente no VS2008
-
21-08-2019 - |
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!
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!