logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog

follow us in feedly

Distribuindo aplicações feitas com o Visual C++ 8

O Visual C++ 8 (que faz parte do Visual Studio 2005) trás além de diversas melhorias, mudanças na distribuição dos softwares compilados com ele. Algumas coisas importantes devem ser notadas, como o fato de que distribuir aplicações em versão DEBUG é uma violação de EULA.

O Visual C++ é atualmente a única ferramenta da Microsoft que possibilita que você compile um programa que não depende de runtimes ou DLLs adicionais, um programa que é 100% Windows e só. Mesmo assim, para fins de redução de tamanho dos arquivos binários e para facilitar a distribuição, muitos programadores preferem fazer link do aplicativo com a msvcr80.dll, mfc80.dll e atl80.dll. Nesse quesito, a grande mudança no Visual C++ 8 é que as runtimes da MFC e ATL devem ser distribuídas usando MSI ou mantidas na pasta do aplicativo (o que é uma recomendação antiga da Microsoft para diminuir do DLL Hell). O MSI (ou merge module se você fizer seu próprio setup) instalará as runtimes usando o recurso Shared Assemblies do Windows XP ou superior, para evitar que atualizações da runtime quebrem programas que estejam funcionando.

(Só não esqueça que o Shared Assemblies é um recurso do Windows e não do .NET. As runtimes do Visual C++ 8 não têm qualquer dependência do .NET Framework e seus programas C++ serão nativos como sempre foram. C++ == nativo/unmanaged, C++/CLI == .NET/managed.)

Apesar dos novos complicadores, existe uma documentação bem explicada e detalhada na MSDN, com destaque para o How to deploy using XCOPY e Visual C++ Libraries as Shared Side-by-Side Assemblies, que lista as DLLs necessárias e suas respectivas funções.

Se mesmo assim a coisa complicar, configure o seu projeto para fazer link estático com todas as bibliotecas (C++ runtime, MFC ou ATL) e você terá o velho e bom executável sem dependências e que roda em qualquer máquina com Windows instalado. :-)


Em 22/02/2006 20:41, por Rodrigo Strauss


  
 
 
Comentários
Hugo Parente Lima | em 27/02/2006 | #
É uma decisão dificil... escolher entre facilidade (linkar tudo estaticamente) ou fazer seu executavel comer menos memoria... (linkar tudo dinamicamente e rodando com as dll's que tiverem em windows\system\etc...)
Luiz Alves | e-mail | em 28/04/2006 | #
Estou interessado em avaliar o VC++8 para codificação de sistema de tempo real. A questão de "comer menos memória" me é interessante. Você experimentou este tipo de sistema com este software? Qual uma boa bibliografia para o produto além do help?
Rodrigo Strauss | website | em 28/04/2006 | #
Em C++ você só paga por aquilo que você usa. Como você aloca e desaloca sua própria memória, você pode gerenciá-la como quiser.

Você pode ler qualquer livro de C++, não precisa ser específico de Visual C++
Lucas | e-mail | em 30/04/2006 | #
bom eu sei qui aqui nao eh u lugar correto pra mim pedi isso e tal mas vejo aqui como meu ultimo recusro... ja que taum falandu em dll eu preciso de ajudaa... eu fui instalar um jogo e qnd eu vou instalar da o seguinte erro:

Executable 'E:\setup\rsrc\cod2.EXE' had the following error: Couldn't find library MSVCR80.dll (required by C:/ARQUIV~1\WINDOW~4\MpShHook.dll)
Please ensure that it is installed

eu sei que esta totalmente fora do contexto do qui é para comentar peço mil desculpas, mas se puder me ajudar brigadao!
e novamente desculpas por nao se tratar do assuntu tratado ae em cima. Desculpa mesmo!

Abração!
Rodrigo Strauss | website | em 01/05/2006 | #
Baixe e instale a runtime do Visual C++ 8 em

http://www.microsoft.com/downloads/details.aspx?familyid=32B...
viinicius | e-mail | em 21/09/2006 | #
Como que eu faço para criar um projeto linkado staticamente com as bibliotecas MFC e ATL? Para evitar o erro de falta da msvcr80.dll

Abraços
Vinicius
Rodrigo Strauss | website | em 21/09/2006 | #
Propriedades do projeto, C/C++, Code Generation, Runtime Library. Mude para a versão estática.
vinicius | e-mail | em 21/09/2006 | #
Obrigado cara,

Mas ainda tenho um problema. Estou colocando o IMSL para funcionar com o visual studio e compilo e crio o executavel sem problemas.

Quando vou executar fala que falta a msvcr80.dll, mesmo colocando no Runtime Library a opcao Multi-threaded.

O que eu posso fazer para resolver isso?

Abraços
Rodrigo Strauss | website | em 22/09/2006 | #
O que é IMSL?
vinicius | e-mail | em 22/09/2006 | #
Cara,

IMSL são um conjunto de funcoes matematicas, mas o problema não está nisso, acredito eu. Pois compila e dá o build bonito.

Acontece que na hora de executar fala que falta a dll que coloquei no post anterior.

Tem alguma idéia?

Abraços
Vinicius
Rodrigo Strauss | website | em 22/09/2006 | #
As configurações para MFC e ATL ficam na parte "General" das propriedades do projeto. Veja "Use of MFC" e "Use of ATL".
Algo a dizer?
Nome:


Site:


E-mail:


Escreva o número vinte e seis:


 Não mostre meu e-mail no site, não serve pra nada mesmo...

Comentário





Os comentários devem ser sobre assuntos relativos ao post, eu provavelmente apagarei comentários totalmente offtopic. Se quiser me enviar uma mensagem, use o formulário de contato. E não esqueça: isso é um site pessoal e eu me reservo o direito de apagar qualquer comentário ofensivo ou inapropriado.
rebarba rebarba
  ::::