Pergunta

Ainda precisamos nos preocupar com o vcredist.exe ao distribuir aplicativos nativos do Windows? Algum desses vem com o Win-7?

Caso contrário, existem motivos técnicos que eles não são enviados para as pessoas por meio do EG Windows Update-em vez de nos deixar sobrecarregar os clientes com um trabalho ainda assim que é o trabalho? (OK, isso pode parecer argumentativo, mas estou realmente me perguntando o motivo pelo qual essas bibliotecas não são padrão instaladas/atualizadas nas máquinas do Windows)

Foi útil?

Solução

Eu acho que depende de como / com o que você está vinculado. Se você estiver vinculado diretamente ao kernel32.dll etc, não importa, é claro (ou seja, a biblioteca de tempo de execução C está incorporada), mas a Microsoft não recomenda esse método de distribuição.

Se você estiver vinculado através do MSVCR80/90/O que quer que 2010 seja.dll, pode ser necessário distribuir essa biblioteca de tempo de execução como no XP, ela não é padrão. O MSVCR80 vem no Vista, mas o MSVCR90 não acho que não - embora possa ser adicionado pelo Windows Update. Ainda assim, você não pode confiar nisso, portanto, o Failsafe é ter uma cópia dela apenas por precaução.

Até onde eu conheço msvcrt.dll (que o mingw links) é distribuído com tudo> xp. O vc6 link para isso? Eu não tinha VC ++ naquela época.

Dê uma olhada no executável com depends.exe No Windows SDK e calcule o que vem com as partes acima e além da API do Windows.

Outras dicas

Sim, você faz. Caso contrário, seu programa travará espetacularmente quando você tentar executá -lo. Muitos usuários não estão executando o Win7 e, mesmo assim, não há como garantir que eles tenham o tempo de execução instalado sem incluí -lo no seu instalador.

Como alternativa, você pode se vincular à construção estática do tempo de execução, evitando a necessidade de se preocupar com o Cenistribuível de tempo de execução C.

Ao compilar com o GCC, sempre vincula -me ao msvcrt.dll, que está sempre lá no XP e mais recente.

Isso é em resposta ao comentário de Larry Osterman, datado de 14 de abril às 23:29:

Você diz:

msvcrt.dll não é o tempo de execução C. É um componente interno do Windows que nunca deve ser usado por aplicativos de terceiros. Você notará que não pode encontrar nenhuma referência no MSDN que use esta DLL. Era uma vez que os aplicativos de terceiros usaram isso, mas esse não é o caso há cerca de 10 anos. - Larry Osterman 14 de abril às 23:29

Isso parecia ir contra toda a premissa do sistema Mingw, que se baseia no acesso ao msvcrt.dll e seu comentário me permitiu entender melhor como o Mingw funciona. Acontece que Mingw ainda usa o msvcrt.dll que foi enviado em 1998! Veja este link:

http://www.mingw.org/wiki/C99

Obrigada,

Todd

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