Po skompilowaniu programu w wersji Release dostałem błąd jak w temacie na kompie nie zaopatrzonym w Visual C++ Redistributable for Visual Studio 2015.
Wyczytałem, że aby to zmienić, trzeba ustawić RuntimeLibrary tak samo w swoim projekcie i innych bibliotekach z których korzystam. Próbuję na różne sposoby to poustawiać, ale nie idzie mi to zupełnie, dostaję cały czas błąd:
"Podczas kompilowania programu dostaję qtmain.lib(qtmain_win.obj) : error LNK2038: wykryto niezgodność dla elementu „RuntimeLibrary”: wartość „MD_DynamicRelease” jest niezgodna z wartością „MT_StaticRelease” w elemencie DataExtractor.obj"
Ktoś coś poradzi?
Dodam, że w programie korzystam z biblioteki dll, która to korzysta z innej dll-ki plus 3 lib-ów. Do tego Qt. Podpowiedzcie jak się z tym uporać proszę.
MSVCP140.dll missing
- Rejestracja: dni
- Ostatnio: dni
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Grudziądz/Bydgoszcz
- Postów: 5300
powinieneś dystrybuować ten plik razem z twoim plikiem exe lub w instalatorze wymuszać instalacje odpowiedniego redistribute package
- Rejestracja: dni
- Ostatnio: dni
Dzięki, to wiem :) Ale chciałbym zalinkować to statystycznie, czytałem że tak się da: https://stackoverflow.com/questions/37216181/missing-mscvp140-dll-and-missing-vcruntime140-dll-when-running-an-exe-file , aczkolwiek u mnie nie działa tak jak bym chciał.
Ale jeśli nie będzie innej opcji, to dorzucę te pliki do folderu z programem po prostu, tak jak piszesz.
- Rejestracja: dni
- Ostatnio: dni
@fryderykst: Jaki masz system na tym drugim komputerze?
Z tego co pamiętam, msvcp140.dll jest w net frameworku, a od windows vista wzwyż każdy system ma to zainstalowane.
- Rejestracja: dni
- Ostatnio: dni
10 na jednym i drugim
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Grudziądz/Bydgoszcz
- Postów: 5300
Wesoły Karp napisał(a):
@fryderykst: Jaki masz system na tym drugim komputerze?
Z tego co pamiętam, msvcp140.dll jest w net frameworku, a od windows vista wzwyż każdy system ma to zainstalowane.
ale jesteś świadom, że są różne wersje i każdy ma inne biblioteki?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
Jak chcesz linkować statycznie to linkuj, wtedy ten dll będzie zbędny. W czym problem?

Ale z reguły sensowniejszym rozwiązaniem będzie użycie odpowiedniego MSVC redistributable.
- Rejestracja: dni
- Ostatnio: dni
Problem w tym, że wybierając dynamiczne linkowanie pojawia się problem z tytułu, a wybierając linkowanie statyczne problem linikera:
"Podczas kompilowania programu dostaję qtmain.lib(qtmain_win.obj) : error LNK2038: wykryto niezgodność dla elementu „RuntimeLibrary”: wartość „MD_DynamicRelease” jest niezgodna z wartością „MT_StaticRelease” w elemencie DataExtractor.obj"
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
A, Qt nie sposób sensownie linkować statycznie (kilkadziesiąt-kilkaset mb binarki). Linkuj dynamicznie, klientom dawaj linka do odpowiedniego redistributabla.
- Rejestracja: dni
- Ostatnio: dni
Jak na razie, do celów testowych po prostu wkleiłem dll do folderu z programem, ale w ostatecznej wersji zrobię pewnie tak jak mówisz, będzie bezpieczniej.
- Rejestracja: dni
- Ostatnio: dni
Czyli to na pewno jest problem z Qt? Bo element DataExtractor.obj korzysta z podofo.dll, które też jest linkowane dynamicznie, więc czy tutaj może być problem?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
Problem z Qt jest taki, ze gdy go używasz to binarki puchną do niemożliwych rozmiarów (i musisz sam skompilować Qt w odpowiednim trybie). A linkujesz Qt, więc to Cię blokuje. Jeśli nie używasz w projekcie Qt to go nie linkuj.
- Rejestracja: dni
- Ostatnio: dni
Nie ma znaczenia czy Qt jest linkowane statycznie czy dynamicznie, tylko czy zlinkowane jest ze statycznym czy dynamicznym runtime'em.
- Rejestracja: dni
- Ostatnio: dni
Używam Qt, inaczej bym go nie linkował :) Dzięki za porady.