Ich arbeite an einer C++ - Anwendung für Windows, die OpenSSL 1.0.1e-Bibliothek verwendet. Ich bin auf Visual Studio 2008.Wie baue ich OpenSSL statisch mit der Windows-Laufzeitumgebung verbunden?
Aus Gründen der Portabilität ist meine Anwendung statisch mit Laufzeitbibliotheken verknüpft (/MT
und /MTd
Optionen). Und ich liefere keine Laufzeitbibliotheken mit meiner Anwendung.
Per der OpenSSL FAQ ist die Bibliothek standardmäßig gegen Multithread DLL-Laufzeit (/MDd
) verknüpft, die offensichtlich mit meinem Szenario nicht kompatibel ist. Damit mein Programm funktioniert, habe ich applink.c
zu meinem Projekt hinzugefügt. Auf meiner Entwicklungsmaschine und auf den meisten Testcomputern funktioniert das Programm gut.
Aber leider habe ich Computer gefunden, wo die App nicht startet. Windows zeigt Fehler:
The application failed to initialize properly (0xc0150002). Click on OK to
terminate the application.
Ich habe libeay32.dll
in Dependency Walker geöffnet und ich sehe, dass MSVCR90.dll
nicht gefunden wird. Also funktioniert der Trick mit applink.c
nicht wirklich für mich.
Wie baue ich OpenSSL mit /MT
oder /MTd
Option?
* "Aber leider habe ich Computer gefunden, wo die App nicht startet ... Ich sehe, dass MSVCR90.dll nicht gefunden wird" * - sicher sein, dass die Problemcomputer die richtige Version der MSVC-Laufzeit haben. Sie können sie von der Microsoft-Website herunterladen. Sie sollten in Ihrem Paketinstallationsprogramm enthalten sein. – jww