Sto lavorando a un'applicazione C++ per Windows che utilizza la libreria OpenSSL 1.0.1e. Sono su Visual Studio 2008.Come posso creare OpenSSL collegato staticamente al runtime di Windows?
Per motivi di trasferibilità la mia applicazione è collegata staticamente alle librerie di runtime (opzioni /MT
e /MTd
). E non invio le librerie di runtime con la mia applicazione.
Per la OpenSSL FAQ, la libreria è di default collegata al runtime DLL multithread (/MDd
) che è ovviamente incompatibile con il mio scenario. Quindi per far funzionare il mio programma ho aggiunto applink.c
al mio progetto. Sulla mia macchina di sviluppo e sulla maggior parte dei computer di test il programma funziona correttamente.
Ma sfortunatamente ho individuato computer in cui l'app non viene avviata. Di Windows Errore di display:
The application failed to initialize properly (0xc0150002). Click on OK to
terminate the application.
Ho aperto libeay32.dll
in Dependency Walker e vedo che MSVCR90.dll
non si trova. Quindi il trucco con applink.c
non funziona davvero per me.
Come si crea OpenSSL con l'opzione /MT
o /MTd
?
* "Ma sfortunatamente ho individuato computer in cui l'app non si avvia ... Vedo che MSVCR90.dll non è stato trovato" * - assicurarsi che i computer con problemi abbiano la versione corretta del runtime MSVC. Puoi scaricarli dal sito di Microsoft. Dovrebbero essere inclusi nel programma di installazione del pacchetto. – jww