Jak spakować projekt visual studio c++ do wydania?

Zastanawiam się, jak zrobić release build, który zawiera wszystkie niezbędne pliki dll do .exe więc program może być uruchomiony na maszynie non-development bez konieczności instalowania redystrybucji microsoft na maszynie docelowej.

Bez tego otrzymasz komunikat o błędzie, że konfiguracja aplikacji nie jest poprawna i do ponownej instalacji.

Author: DShook, 2008-08-06

5 answers

  1. Wybierz Projekt - > Właściwości
  2. Wybierz Konfigurację - > Ogólne
  3. w polu jak należy połączyć MFC, wybierz statycznie połączyć go.
  4. Wybierz Linker - > Input. W sekcji dodatkowe zależności Dodaj biblioteki, których potrzebujesz, aby aplikacja łączyła się statycznie.
 17
Author: Michael Pryor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-27 16:41:15

Należy ustawić bibliotekę run-time (W C / C++ - > Generowanie kodu) dla wszystkich projektów na statyczne powiązania, które korelują z następującymi domyślnymi konfiguracjami budynku:

  • Wielowątkowy Debug / Release
  • Singlethreaded Debug / Release

W przeciwieństwie do wersji " DLL " tych bibliotek.

Nawet jeśli to zrobisz, w zależności od bibliotek, których używasz, być może będziesz musiał zainstalować moduł scalający/framework / etc. Zależy od tego, czy statyczne LIB dostępne są wersje zależności.

 10
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-07 21:11:52

Należy pamiętać, że Microsoft nie zaleca statycznego łączenia środowiska wykonawczego z projektem, ponieważ zapobiega to serwisowaniu go przez windows update w celu naprawienia krytycznych błędów bezpieczeństwa. Istnieją również potencjalne problemy, jeśli przekazujesz pamięć między głównym .exe i .pliki dll tak, jakby każdy z tych statycznych łączy runtime możesz skończyć z malloc / free mismatch problemy.

Możesz dołączyć biblioteki DLL do pliku wykonywalnego, bez kompilowania ich do .exe i bez Uruchamianie narzędzia redist - to jest to, co robię i wydaje się działać dobrze.

Jedyną muchą w maści jest to, że musisz załączyć pliki dwa razy, jeśli dystrybuujesz dla szerokiej gamy wersji Windows - nowsze OSs potrzebują plików w katalogach zdefiniowanych przez manifest, a starsze chcą wszystkich plików w katalogu programu.

 4
Author: Simon Steele,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-09 11:41:09

Szukałbyś linku statycznego (w przeciwieństwie do linku dynamicznego)

Nie jestem pewien, ile ms linkuje statycznie.

 0
Author: Josh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-06 12:10:55

Jeśli szukasz dowiedzieć się, które dll jest Twój docelowy komputer brakuje następnie użyj zależy.exe, który kiedyś był dostarczany z MSDev, ale można go również znaleźć tutaj . Testowanie tego na kilku maszynach docelowych powinno ci powiedzieć, które biblioteki dll musisz spakować ze swoją aplikacją.

 0
Author: David Sykes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-07 06:40:28