Como você embalar um projeto do Visual Studio C ++ para a liberação?

votos
32

Eu estou querendo saber como fazer uma compilação de lançamento que inclui todos os arquivos DLL necessários para o .exe para que o programa pode ser executado em uma máquina não-desenvolvimento sem ele ter que instalar o redistribuível Microsoft na máquina de destino.

Sem fazer isso, você receber a mensagem de erro que a configuração da aplicação não é correto e reinstalar.

Publicado 06/08/2008 em 10:49
fonte usuário
Em outras línguas...                            


5 respostas

votos
17

  1. Escolher projeto -> Propriedades
  2. Selecione Configuração -> Geral
  3. Na caixa de como você deve ligar MFC, optar por ligá-lo estaticamente.
  4. Escolha Linker -> Entrada. Sob Dependências adicionais , adicione quaisquer bibliotecas necessárias a sua aplicação para ligar estaticamente no.
Respondeu 13/08/2008 em 19:10
fonte usuário

votos
10

Você precisa definir a biblioteca de tempo de execução (Under C / C ++ -> Geração de Código) para todos os projectos a ligação estática, que se correlaciona com as seguintes configurações de construção padrão:

  • Multithreaded Debug / Lançamento
  • Singlethreaded Debug / Lançamento

Ao contrário das versões "DLL" dessas bibliotecas.

Mesmo se você fizer isso, dependendo das bibliotecas que você está usando, você pode ter que instalar um módulo de mesclagem / framework / etc. Depende se versões biblioteca estática de suas dependências estão disponíveis.

Respondeu 07/08/2008 em 22:11
fonte usuário

votos
4

Esteja ciente de que a Microsoft não recomenda que você vínculo estático o tempo de execução em seu projeto , pois isso impede que ele seja atendido por windows update para corrigir bugs de segurança crítica. Há também problemas potenciais se você estiver passando de memória entre o .exe e .dll principal como se cada um desses links estáticos o tempo de execução, você pode acabar com problemas de incompatibilidade gratuitos malloc /.

Você pode incluir as DLLs com o executável, sem compilar-los para o .exe e sem executar a ferramenta redist - este é o que eu faço e parece funcionar bem.

A única mosca na sopa é que você precisa para incluir os arquivos duas vezes se você está distribuindo para uma ampla gama de versões do Windows - mais recente OSs precisa dos arquivos em diretórios definidos pelo manifesto, e os mais velhos querem todos os arquivos no diretório do programa .

Respondeu 09/09/2008 em 12:41
fonte usuário

votos
0

Se você estiver olhando para descobrir qual dll da sua máquina alvo está faltando então usar depends.exe que costumava vir com MSDev, mas também podem ser encontradas aqui . Testando isso em algumas máquinas de destino deve dizer-lhe que DLL que você precisa para embalar com seu aplicativo.

Respondeu 07/08/2008 em 07:40
fonte usuário

votos
0

Você estaria olhando para ligação estática (em oposição a vincular dinamicamente)

Não tenho certeza quantos dos redistributables MS estaticamente link no.

Respondeu 06/08/2008 em 13:10
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more