Na blogu nie poruszałem jeszcze tematyki C++ ale skoro nadarzyła się okazja to czemu nie. Otóż, przez mocno już zirytowanego programistę, zostałem poproszony o pomoc w rozwiązanie problemu z kompilacją programu napisanego w C++.
Rzeczony programista chciał w swojej aplikacji użyć znalezionej w sieci biblioteki kryptograficznej. W ustawieniach projektu wskazał, więc lokalizację pliku lib z bibliotekę oraz lokalizację potrzebnych plików nagłówkowych. Niestety, pomimo wielokrotnych prób, sprawdzaniu ustawień, rwania włosów z głowy itd. próba kompilacji zawsze kończyła się długą listą błędów.
Rozwiązanie okazało się tyle proste, co nieintuicyjne i trudne do znalezienia jeśli sie o tym nie wie. Otóż biblioteka kryptograficzna została skompilowana z inną wartością parametru Runtime Library tj. Multi-threaded Debug (/MTd) niż aplikacja tj. Multi-threaded Debug DLL (/MDd). Po zmianie ustawień parametru Runtime Library dla aplikacji na wartość Multi-threaded Debug (/MTd) proces kompilacji wreszcie zakończył się sukcesem.
Rzeczony programista chciał w swojej aplikacji użyć znalezionej w sieci biblioteki kryptograficznej. W ustawieniach projektu wskazał, więc lokalizację pliku lib z bibliotekę oraz lokalizację potrzebnych plików nagłówkowych. Niestety, pomimo wielokrotnych prób, sprawdzaniu ustawień, rwania włosów z głowy itd. próba kompilacji zawsze kończyła się długą listą błędów.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-cY0lqzx_bp5nZYD93yhdoZyhCweTcVFO_3FxfbtfdtqnfkLiVHvgTPh9BMudJe6cw_K8-L3fQycN-yf73KPYVzrZzmc27MR9lqtS2uCndyxNVK9PTAONjBXcoQoFC4wg3pJvk6gDenhg/s400/LinkerErrors.png)
Rozwiązanie okazało się tyle proste, co nieintuicyjne i trudne do znalezienia jeśli sie o tym nie wie. Otóż biblioteka kryptograficzna została skompilowana z inną wartością parametru Runtime Library tj. Multi-threaded Debug (/MTd) niż aplikacja tj. Multi-threaded Debug DLL (/MDd). Po zmianie ustawień parametru Runtime Library dla aplikacji na wartość Multi-threaded Debug (/MTd) proces kompilacji wreszcie zakończył się sukcesem.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH5LJ8bl2REGqKoqYMvyeHelKXF8IJb5xtWaApvVjscQEaxuFsvW3C53GW6EvR_sOUhBYIrxB0AY4fdlnQYIK299XPhOnzd9O71vgBcLn96WyM8W2FNiASPLzUVjdUAsr2YDKqtth4qtQ1/s400/Configuration.png)
0 comments:
Post a Comment