Mă întreb cum să faceți o versiune de lansare care include toate fișierele DLL necesare în .exe, astfel încât programul poate fi rulat pe o mașină fără dezvoltare fără a fi nevoie să instalați redistributableul microsoft pe mașina țintă.
Fără a face acest lucru veți primi mesajul de eroare conform căruia configurația aplicației nu este corectă și să reinstalați.
You need to set the run-time library (Under C/C++ -> Code Generation) for ALL projects to static linkage, which correlates to the following default building configurations:
Spre deosebire de versiunile "DLL" ale acestor biblioteci.
Chiar dacă faceți acest lucru, în funcție de bibliotecile pe care le utilizați, este posibil să fie necesar să instalați un Module de colaborare / cadru / etc. Depinde dacă versiunile statice LIB ale dependențelor sunt disponibile.
Rețineți că Microsoft nu vă recomandă să conectați static timpul de rulare în proiectul dvs. , deoarece acest lucru împiedică serviciul să fie întreținut prin actualizarea Windows pentru a repara erorile de securitate critice. Există, de asemenea, potențiale probleme dacă treceți memoria dintre fișierele .exe și .dll principale ca și cum fiecare dintre aceste legături statice timpul de execuție se poate termina cu malloc / probleme de nepotrivire liberă.
Puteți include DLL-urile cu executabilul, fără a le compila în fișierul .exe și fără a rula instrumentul de redistribuire - aceasta este ceea ce fac și se pare că funcționează bine.
Singura zbura din unguent este că trebuie să includeți fișierele de două ori dacă distribuiți pentru o gamă largă de versiuni Windows - noile sisteme de operare au nevoie de fișiere în directoare definite în mod manifest și cele mai vechi doresc toate fișierele din directorul de programe .