Я хотел бы развернуть очень простую DLL с моим приложением C#, но любая DLL, которую я создаю в Visual Studio 2008, похоже, зависит от «Microsoft.VC90.CRT». Возможно ли построить DLL с использованием VS2008 без этой зависимости? Как я могу узнать, что вызывает зависимость?Возможно ли построить DLL на C++, который не имеет зависимостей?
ответ
Я не уверен в последних версиях VC++, но ранее вы могли бы рассказать компоновщику ссылку со статической версией библиотеки времени выполнения MSVCRT вместо динамической (DLL) версии. Возможно, этот вариант все еще существует.
Дай этот инструмент выстрел: http://www.dependencywalker.com/. Это позволит вам пройти через ваши зависимости от данного exe или dll.
Кажется, что просто создание пустой DLL в VS2008 также имеет эту зависимость. Я еще не добавил никаких дополнительных ссылок или всего лишь пустого проекта. – 2008-12-04 18:04:18
Согласно this MSDN page, статические библиотеки по-прежнему доступны. Перейти к свойствам проекта, свойствам конфигурации, C/C++, генерации кода, библиотеке времени выполнения.
Выберите многопоточную отладку для конфигурации отладки и многопоточность для конфигурации выпуска. (Не уверен, что имена все одинаковы в VS2008, но должны быть «где-то там». Может обновиться завтра с конкретными отличиями VS2008)
Кроме того, как предложил wbic16, используйте зависимый ходок для идентификации других статических зависимостей.
Если вы абсолютно уверены, что у вас нет зависимостей от времени выполнения C, вы можете избежать привязки к нему, включив флаг «Игнорировать все библиотеки по умолчанию» (/ NODEFAULTLIB) в проекте Linker -> Input страницы параметров. Вам также может потребоваться отключить основные проверки времени выполнения (установите «Базовые проверки выполнения» на «По умолчанию» в C/C++ -> Генерация кода), и вам также может потребоваться удалить точку входа (установить «Нет точки входа» в «Да (/ NOENTRY) "в разделе Linker -> Advanced).
См. Также http://support.microsoft.com/kb/814472, у него есть хорошая информация о создании DLL для управляемых расширений для C++.
Редактировать: Обратите внимание, что запуск без использования C также означает, что у вас нет простой функции выделения памяти, такой как malloc() и new.
С небольшим количеством работы libCTiny по-прежнему работает в качестве замены для библиотеки по умолчанию. Такая библиотека делает/NODEFAULTLIB полезной.
Чтобы ответить на второй вопрос, с помощью компоновщика/VERBOSE компоновщик свяжется с вами, какие символы взяты из какой библиотеки.
Удостоверьтесь, что ваше здание в каждой версии выпускается так же часто, как и при отладке, dll привязывается к специальным DLL-файлам, которые обычно не поставляются с окнами и вызывают проблемы с зависимостями.
- 1. Возможно ли построить JNI .dll под Linux?
- 2. Возможно ли декомпилировать DLL, написанную на C?
- 3. Ссылка dll - Имеет ли имя файла dll?
- 4. C# VS2005: Возможно, поврежден DLL
- 5. C# Dll выгружается? Возможно ли это?
- 6. Возможно ли построить интерактивную оболочку C?
- 7. Есть ли способ, чтобы исключить DLL зависимостей
- 8. Возможно ли построить lazy_conditional metafunction
- 9. Возможно ли заменить системную dll прокси-dll?
- 10. Возможно ли создать DLL, содержащую другую DLL?
- 11. Возможно ли/возможно построить широкомасштабное приложение Flex?
- 12. . Проверка зависимостей dll dll
- 13. конфликт версий зависимостей Dll
- 14. Возможно ли зашифровать DLL-код?
- 15. Сканирование зависимостей DLL от исполняемого файла C#
- 16. Возможно ли построить Thread на Global.asax
- 17. .NET сборка DLL отсутствующих зависимостей
- 18. понимание зависимостей DLL
- 19. Удаление внешних зависимостей в проекте DLL MFC
- 20. Возможно ли построить DLL, которая может поддерживать несколько версий .NET-ссылок?
- 21. Возможно ли построить exe на Vista и развернуть на XP с помощью py2exe
- 22. Как избежать зависимостей DLL?
- 23. Webpack - построить пакет без зависимостей
- 24. Можно ли построить из контейнера stl, который имеет другой распределитель?
- 25. Возможно ли ограничить функциональность DLL?
- 26. Возможно ли сгенерировать DLL с использованием компилятора Turbo C/C++?
- 27. Возможно ли наложение интерфейса на внешний класс в C#?
- 28. Возможно ли построить программу C через скрипт python?
- 29. COM Dll Дерево зависимостей
- 30. инъекции Использование зависимостей с AutoMapper ValueResolver, который имеет аргументы конструктора
Это интересная идея. Кажется, MS рекомендует не делать этого, но если он решает мои проблемы ... – 2008-12-04 20:26:10
Это работало как чемпион - спасибо. – 2008-12-05 15:18:24