Pergunta

Um aplicativo MFC que eu estou tentando migrar usa afxext.h, o que faz com que _AFXDLL para obter o conjunto, o que faz com que esse erro se eu definir /MT:

Por favor, utilize o parâmetro /MD para _AFXDLL compilações

Minha pesquisa indica que é impossível construir uma aplicação para execução no Windows NT 4.0 usando o Visual Studio C++, neste caso) de 2005.

Isto é mesmo verdade?Há alguma solução?

Nenhuma solução correta

Outras dicas

Não, existem muitos aplicativos criados com o VS2005 que tem suporte para Windows XP, 2000, NT, a pilha inteira.O problema é que (por padrão) VS2005 quer usar bibliotecas/exportações não existe no NT.

Ver esta thread para alguns de fundo.

Em seguida, começar a limitar as suas dependências através de pré-processador de macros, e evitando APIs que não são suportados no NT.

Para livrar-se do _AFXDLL de erro, você já tentou mudar as configurações para usar o MFC como uma biblioteca estática em vez de uma DLL?Isso é semelhante ao que você já está fazendo em mudar as bibliotecas de tempo de execução para estáticos em vez de DLL.

A solução é corrigir a DLL multi-threaded. Instruções simples.Breve resumo:

O envio 8.0 C Runtime Library (DLL MSVCR80.DLL não suporta NT 4.0 SP6, por uma razão e um motivo só:alguém na Microsoft adicionado a uma chamada de função para GetLongPathNameW o que não existe no kernel32.dll no NT 4.0.

CRTLIB.C Na linha 577, há uma chamada para GetLongPathNameW.simplesmente substituí-lo com: ret = 0; somente use esta compilação de MSVCR80.DLL no NT 4.0.

Uma vez que você tem aqueles de trabalho, chegando com mais genérico solução deve ser trivial.

Apesar de que eu não estou familiarizado com afxext.h, estou perguntando o que sobre isso o torna incompatível com o Windows NT4....

No entanto, para responder a pergunta inicial:"Minha pesquisa indica que é impossível construir uma aplicação para execução no Windows NT 4.0 usando o Visual Studio C++, neste caso) de 2005."

A resposta deveria ser sim, especialmente se o aplicativo foi originalmente escrito ou em execução no NT4!Com o afxext.h coisa de lado, isso deve ser fácil SIM.

A outra coisa que eu estou encontrando problemas com está à solta natureza em que as pessoas estão jogando fora o termo do NT.Concedida a maioria das pessoas pensa 'NT' como o Windows NT4, mas ainda é ambíguo, porque "a maioria das pessoas' não é igual a " todas as pessoas.'

Na realidade, o termo 'NT' é igual a série NT.A série NT é NT3, NT4, NT5 (2000, XP, 2003) e NT6 (Vista).

Win32 é um subsistema que você segmentar seu código C/C++ também.Então eu não vejo nenhuma razão por que não se deve ser capaz de direcionar este NT4 plataforma & subsistema ou, se esta é uma plataforma de portagem seja, remover o MFC dependências que VC é, possivelmente, imponente.

Adicionar a afxext.h à mistura, soa para mim como um subsistema problema de compatibilidade.É parte do MFC a partir do meu Google pesquisa.O afxext.h parece ser o MFC (Microsoft Foundation Class) extensões.

Você pode remover a sua dependência em MFC?Que tipo de aplicação é isto?(CLR, serviço, interface GUI?) Você pode converter de projeto para um C++ não gerenciado projeto em VC 8.0?

Espero que alguns de isto irá ajuda-lo.

A idéia é que o exe é necessária para ligar para a biblioteca estática.

Por favor, tente isso "Propriedades de configuração", "Geral", "Uso de MFC" para "Usar MFC em uma Biblioteca Estática" "Propriedades de configuração", "Geral", "Uso de ATL" a "Static Link para ATL"

"Propriedades de configuração", "C\C++", "Geração de Código", "Biblioteca de tempo de execução" para "Multi-Threaded (\MT)"

A Plataforma De Teste Máquina De Compilação:O Visual Studio 2005 no windows XP SP2 A Máquina Do Cliente:O windows XP SP2 (não VS2005 instalado)

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