MSVCP140.dll missing

0

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ę.

2

powinieneś dystrybuować ten plik razem z twoim plikiem exe lub w instalatorze wymuszać instalacje odpowiedniego redistribute package

0

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.

0

@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.

0

10 na jednym i drugim

0
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?

0

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.

0

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"

0

A, Qt nie sposób sensownie linkować statycznie (kilkadziesiąt-kilkaset mb binarki). Linkuj dynamicznie, klientom dawaj linka do odpowiedniego redistributabla.

0

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.

0

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?

1

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.

2

Nie ma znaczenia czy Qt jest linkowane statycznie czy dynamicznie, tylko czy zlinkowane jest ze statycznym czy dynamicznym runtime'em.

0

Używam Qt, inaczej bym go nie linkował :) Dzięki za porady.

1 użytkowników online, w tym zalogowanych: 0, gości: 1