Как вы указываете Visual C++ Express 2008 статически связывать библиотеки времени выполнения вместо динамического? Мои exes в настоящее время не работают на компьютерах без какой-либо VS-установки, и я хотел бы изменить это. :)Static Runtime Library Linking для Visual C++ Express 2008
ответ
Извините, у меня нет VC++ Express для тестирования, но в стандартной версии я использую Project Properties -> Configuration Properties -> C/C++ -> Generation Code -> Runtime Library. Dll и Dll Debug предназначены для динамической компоновки.
Вы на 100% уверены, что хотите это сделать? Пожалуйста, учтите, что если вы это сделаете и есть уязвимость безопасности, обнаруженная в библиотеке времени выполнения, Microsoft не сможет исправлять ваше приложение через Центр обновления Windows.
Другое решение заключается в том, чтобы упаковать Visual C++ Runtime, распространяемое вместе с вашим приложением. Он устанавливается очень быстро и не требует Visual Studio. Также важно отметить, что вам не следует распространять код, связанный с библиотеками времени выполнения отладки, поскольку для них требуется Visual Studio. См. Это blog post для получения дополнительной информации о упаковке распространяемого.
EDIT: С учетом сказанного, это зависит от вас. Моя точка зрения состоит в том, что вы не должны игнорировать динамическую привязку, основанную исключительно на идее, что пользователи должны иметь «какой-то VS установлен», что неверно.
См. Ответ на этот вопрос: How do I make a fully statically linked .exe with Visual Studio Express 2005 ?. Это для VS2005 Express, но ответ по-прежнему сохраняется.
Для C-исполнения идти к проекту настройки, выбрать C/C++, затем 'Код Generation. Измените параметр 'runtime library' на 'multithreaded' вместо 'многопоточной dll'.
Если вы используете какие-либо другие библиотеки вам может понадобиться, чтобы сказать компоновщик игнорировать динамически связанный CRT явно.
Вы можете установить повторный набор времени выполнения C на целевом компьютере, и исполняемый файл будет работать там, а также с динамически связанной средой C.
(О, извините, об этом уже упоминалось).
- 1. Linking Libcurl в Visual Studio 2008 Express
- 2. visual C++ 2008 express
- 3. Boost library static linking на Xcode 4
- 4. Help with linking in Visual C++ Express
- 5. C++ Library Linking FMOD
- 6. Visual C# 2008 Express развертывание
- 7. Visual C++ Runtime Library Linker Woes
- 8. Static Library Linking Issue «Неопределенные символы» для символов, которые определены
- 9. Простой установщик для Visual C# Express 2008
- 10. Библиотека WinSock для Visual C++ 2008 Express?
- 11. C++ Static linking weird behavior
- 12. Free Charting Library for Visual C++ 2008
- 13. Что такое «Visual C++ Visual Runtime Library: Ошибка выполнения!»
- 14. xcopy установка Visual C++ 2008 runtime
- 15. pthread static linking
- 16. CUDA Linking Ошибка Visual Studio 2008
- 17. SWIG TCL Static Linking
- 18. CMake и Static Linking
- 19. Static Linking glib
- 20. Visual C++ 2008 Express Загрузить ссылку Dead?
- 21. Visual C# Express 2008 Конструктор форм AutoScroll
- 22. Условный отладчик на Visual C++ 2008 Express
- 23. Подключение MySQL с Visual C# Express 2008
- 24. Makefile: linking library
- 25. Дизайнер Visual C# 2008 Express не работает
- 26. Linking Boost thread library
- 27. Boost static linking
- 28. Static vs Dynamic Linking
- 29. Makefile: Linking. * A library
- 30. Static compilation linking Openssl
Вам нужно было обратить вспять и не заметить, теперь у вас нет и нет. : P – GManNickG
Есть много веских причин, чтобы предпочесть статическую привязку. Я лично уделяю приоритетное внимание «сохранению моего здравомыслия» довольно высоко, и это несовместимо с обручами Microsoft, требующими от вас перепрыгнуть, чтобы распределить время выполнения VC++. – jalf
@ Jalf - Я согласен, что это предпочтение, и есть компромиссы. Я отредактировал свой ответ. –