Я новичок в программировании на C++ и только что закончил создание простого калькулятора. Я решил поделиться им со своими друзьями и после нескольких попыток выяснил, как скомпилировать его в режиме выпуска. Однако даже в режиме выпуска он все еще зависит от MSVCP110D.dll. Мне было интересно, есть ли способ исправить это?Режим освобождения по-прежнему зависит от MSVCP110D.dll (C++ MSVS)
ответ
1) MSVCP110D.dll - это runtime .dll для версии «Debug» библиотеки времени выполнения MS C. Таким образом, похоже, что ваш .exe, возможно, не был создан для «Release» правильно в конце концов.
2) Вот информация для "Visual Studio время выполнения Вторично распространяемого":
http://www.microsoft.com/en-us/download/details.aspx?id=30679
3) Здесь больше информации об этой конкретной проблемы:
К сожалению msvcp100D.dll - это отладочная DLL, и она не включена в Microsoft Visual C++ Redistrutable pack возраст. Это из-за обычно отладочная версия не выпускается в отличие от разработчика. Разработчик установил его по умолчанию с помощью Visual Studio.
Вы можете скомпилировать свой проект в «Release», поэтому вся DLL, которая вам понадобится , будет включена в пакет Microsoft Visual C++ Redistrutable.
В противном случае вы можете сделать статическую ссылку всех библиотек (указать/MT в Release и/МПД в конфигурации отладки в опции компилятора): но лично я не рекомендую его becouse вы положили в исполняемом много информации (используется отладчиком), что замедлит ваше приложение.
решил для меня. В последнее время возникла аналогичная проблема. Самое странное, что моя итоговая DLL зависела от MSVCR100.dll (без «D»), что было правильно, потому что я изменил/MDd на/MD, но также зависел от MSVCP100D.dll, что по той же причине не казалось правильным. После долгих исследований я обнаружил, что это зависит от определений препроцессора. Меняя _DEBUG на DEBUG, я решил проблему. – Nahum
Я предполагаю, что ваша проблема с зависимостью от отладочной версии DLL & не зависимость от самой DLL.
Это весьма вероятно, что вы делаете одну из этих 2-х вещей
компилирования с
/DDEBUG
или/D_DEBUG
ИЛИссылающихся с msvcpd.lib
При компиляции с /DDEBUG
или /D_DEBUG
и #include
Входящий в один из стандартных заголовков C++, затем msvcpd.lib i s вытащил (with a #pragma(lib)
, что приводит к зависимости от msvcpd ***. dll.
msvcp (d) *. Dll - это версия стандартной библиотеки C++.
Если вместо этого ваша проблема связана с любой версией dll, то есть вы хотите статически ссылаться на библиотеку C++, вы можете скомпилировать свою программу с помощью _STATIC_CPPLIB
.
Прошу прощения, я невероятно новичок в этом. Но как бы я стал статически связывать DLL? Когда я скомпилировал его, я сменил тип компиляции с отладки на выпуск. Затем он создал папку выпуска с моими .exe и .cpp, содержащимися внутри. –
@ user2396111 Щелкните правой кнопкой мыши по решению -> свойства, C/C++, Preprocessor-> Добавить _STATIC_CPPLIB в различные существующие определения препроцессора. Также, когда вы там, убедитесь, что DEBUG или _DEBUG уже определены. – user93353
Это не так, также устаревший вариант в VS2012. C/C++, генерация кода, библиотека времени выполнения =/MT –
Вы используете какие-либо дополнительные библиотеки? Возможно, вы включили отладочную версию DLL-файла с вашим исполняемым.
- 1. C# Режим отладки и освобождения
- 2. C++ полная сбой системы, только режим освобождения
- 3. Почему проект MSVS 2010 MFC зависит от vcredist_x86.exe для MSVS 2008?
- 4. AdaGide: режим отладки и режим освобождения
- 5. Режим освобождения vs Debug = "false"
- 6. C++ MSVS dll headers #include issues
- 7. MSVCP110D.dll не найден
- 8. Debug Assertion Failed - MSVCP110D.dll
- 9. Класс C++ зависит от функции, но функция зависит от класса
- 10. Почему C зависит от платформы?
- 11. Размер C-указателя зависит от?
- 12. Отсутствует Visual Studio MSVCP110D.dll
- 13. MSVCP110D.dll и Visual Studio 2013
- 14. Разный режим debug vs mode mode android - режим освобождения freezes
- 15. Посылка освобождения от выбранного совершает
- 16. Нормализация базы данных, где B зависит от A, C зависит от A, но D зависит от B + C
- 17. Ускорение Visual Studio, не включенное в режим освобождения
- 18. Объект освобождения памяти c
- 19. C ошибка двойного освобождения
- 20. Освобождения свойства (Objective-C)
- 21. Jsxgraph зависит от точки
- 22. Зависит от целевой цели
- 23. C++ каждый класс зависит от второго
- 24. Зависит ли golang от c runtime?
- 25. Функция зависит от типа данных в C
- 26. Сделать C# user.config не зависит от версии
- 27. Неузнанное поведение зависит от компилятора в C++?
- 28. C++ Тип данных зависит от корпуса коммутатора
- 29. C# EventHandler зависит от переходов состояния
- 30. Выберите коэффициент зависит от логического значения C#
Единственные внешние ресурсы я тянущие в этом #include «stdafx.h» #include #include #include Но я был под впечатлением, что в режиме выпуска это будет удалить все потребности для внешних ресурсов и будет полностью запущен внутри себя. –
Вы не помогаете себе или нам, не объясняя, как вы * знаете *, что у вас есть зависимость от msvcp100d.dll. У вас ** есть зависимость от версии release на msvcp110.dll, она содержит код для iostream. Вам нужно скопировать его вместе с вашим .exe, msvcr110.dll. Или просто создайте с/MT в действительности, отлично для простых программ, которые не используют библиотеки DLL. –
Вы пытались использовать Dependency Walker? – makc