Это статья про программирование. В предыдущей статье мы узнали как написать и использовать свой класс с набором методов. В этой — познакомимся с инструментом, который позволяет использовать один раз написанный класс в других программах.
Если же Вы хотите научиться создавать программы для Windows, но совсем не знаете с чего начать, то с этой статьи .
Зачем нужны DLL
Представьте себе случай, что какой-то класс или метод написанный в одной программе может понадобиться в другой. Первое что приходит в голову — это просто скопировать необходимый программный код. Но есть вариант получше: вынести всё необходимое в отдельный файл .cs и добавлять его в проект. Но если Вы не хотите делиться с кем-то своим кодом, но есть необходимость, чтобы он использовал написанный Вами функционал? Тогда можно написать динамическую библиотеку классов (DLL), скинуть разработчику основного модуля, а он подключит её к своему проекту.
Ещё DLL бывают удобны когда Вы хотите использовать в множестве программ различные наборы классов и методов, написанных Вами. Например, Вы занимаетесь программами, анализирующими тексты, Вы описали 50 классов («предложение», «фраза», «словосочетание». ) и 300 методов («узнать насколько отличаются», «изменить смысл на противоположный». ). Каждая из Ваших программ использует только некоторые из этих методов, а некоторые классы используются всеми программами. Если на компьютере будут запущены даже сотни программ, использующих Вашу DLL, в память ОС Windows она будет загружена всего один раз. И да, DLL — это механизм ОС Windows, почти во всех других ОС есть аналогичные библиотеки, но именно DLL работать не будет .
КАК СКАЧАТЬ WINDOWS 12 УЖЕ СЕЙЧАС, проверка! разоблачение ВИРУСНЫХ ПРОГРАММ ПОДПИСЧИКОВ!
Дополнительное удобство даёт возможность независимого обновления программ и DLL (правда это частенько выходит боком из-за несовместимости версий, но с собственными DLL такого почти не бывает).
Хороший стиль комментирования программного кода
Когда программа вырастает из одного модуля, то простых вариантов комментирования (// и /* */) становятся уже не достаточно.
Чтобы при вызове метода Visual Studio писал подсказку по параметрам этого метода, поставьте /// перед его объявлением — и вам будет сгенерирован шаблон комментариев с тегами summary и param.
В summary напишите что делает ваш метод, а в param — что за входные параметры вы хотите увидеть. Если ваш метод может вызвать ошибку, то опишите её причину в теге exception. Если ваш метод что-то возвращает, то используйте тег returns. Для самого класса описание также следует писать в summary, а для описания полей использовать тег value. Свои названия тегов тоже можно использовать, но лучше так не делать. Документацию по рекомендованным тегам можно найти на официальном сайте .
В проектах, которые разрабатываются большим числом программистов правильно оформленные комментарии автоматически собираются в сайты с документацией по модулям. Это облегчает работу девопсу при подготовке контейнеров, в которых будет всё необходимое программисту для выполнения конкретной задачи. А также просто помогает понять где что сотруднику, который недавно начал работать над проектом.
Ошибка Dll.Программа для установки DLL автоматически
Даже если ваша DLL (или другая библиотека или модуль) предназначена для русскоязычных программистов, в коллективе может быть принято комментировать на английском языке. Так что может быть полезным потренироваться в английском и на своём проекте.
Как сделать свою DLL на C#
В меню Файл->Создать->Проект есть шаблон приложения «Библиотека классов (.Net Framework)». В интерфейсе на английском «Class Library (.Net Framework)».
Источник: dzen.ru
Как узнать какие функции доступны в dll?
Не пинайте если вопрос сильно не корректен,но собсвенно,как узнать какие функции можно использовать из dll?Вот есть у меня например некая программка,у нее есть dll от автора.Я например точно знаю откуда то,что там есть нужный мне функционал,но не знаю,что это,и как его использовать.Ну или точнее.Допустим стандартная библиотека C stdio.h это не .h а .so ну или .dll.Допустим я знаю что в ней есть функция вывод в в stdout.но что это за функция(printf) я не знаю.Как мне узнать что есть у нашего воображаемого stdio.so/.dll функция printf.Я сейчас не говорю о том как потом использовать ее,хотя и такой информации был бы рад,только начал осваивать работу с dll.Мне понятно что сатндартные dll например user32, kernel32 описаны на MSDN.Но что делать в случае с неизвесными от Васи Пупкина.
- Вопрос задан более трёх лет назад
- 5248 просмотров
Комментировать
Решения вопроса 1
Системный программист ^_^
Открываю IDA и смотрю что за функции торчат наружу, какие параметры принимают и что делают))
Ответ написан более трёх лет назад
Нравится 2 8 комментариев
То есть если,библиотека совсем неизвестная,от Васи Пупкина,то только реверс.Если изввестная то ищем доки?
Dokinacap: Не только реверс. Это мне так удобнее. Уверен, существуют и другие программы «посмотреть таблицу экспорта». Нормальные либы поставляются с .h заголовочными файлами с описанием доступных функций
15432: спасибо большое.Чуть прояснили ситуацию.
например вот
www.heaventools.ru/pe-explorer-export-viewer.htm
IDA нет под линукс. как там?
IDA есть под Линукс
Я обычно Dependency Walker использую www.dependencywalker.com. Показывает не только список экспортируемых функций, но и зависимости от других библиотек.
Однако если есть только DLL без заголовочных файлов и хочется её использовать — то только реверс, как уже выше писали. Ну вот представьте себе — скажем есть библиотека, которая принимает на вход картинку и делает какие-то вычисления, ну, к примеру среднее вычисляет. В IDA вы увидите, что туда отправляется три параметра, но какой за что отвечает вы не знаете. Хорошо, когда есть работающее приложение, которое уже использует эту библиотеку — тут можно запусить его из под отладчика, поставить на эту функцию точку останова, и тогда вы увидите, что, один из параметров — это некий адрес, а два других — скажем, ширина и высота картинки. Но даже и в этом случае вы не знаете деталей — скажем, в памяти изображение может требовать выравнивания на границу 16 байт — а это только из документации можно выяснить, либо путём кропотливого реверс инжиниринга.
Ответы на вопрос 2
легкая артиллерия — нпрмр DependencyWalker
тяжелая артиллерия — нпрмр gdb
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
dumpbin -exports example.dll
но в общем случае ничего не делать, т.к. помимо функции надо знать какие у нее аргументы и какие соглашения вызова используются, что в принципе не всегда возможно.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- C++
Может ли новичок программирование начать с с++/Gamedev?
- 1 подписчик
- вчера
- 103 просмотра
- C++
Что надо знать для написания игрового движка на c++ новичку?
- 1 подписчик
- вчера
- 111 просмотров
Источник: qna.habr.com
Что такое библиотека dll и как ее найти
Файлы библиотек DLL использует почти все программное обеспечение, установленное на компьютере. Пользователь не замечает наличие этих элементов, пока все работает нормально. Их отсутствие становится ярко заметно, когда система сообщает об ошибке DLL. Она возникает из-за того, что нужный компонент отсутствует, устарел или поврежден. Для полноценного функционирования программ в библиотеке должны быть все нужные файлы, причем подписанные цифровой подписью, актуальные и корректно работающие.
Решить проблему с отсутствием dll достаточно просто — необходимо скачать подходящую библиотеку, разместить ее в правильной папке и зарегистрировать в Windows. Рассмотрим алгоритм действий.
Как найти и установить библиотеку DLL
Инсталляция и регистрация библиотеки производится согласно единому алгоритму вне зависимости от версии операционной системы. Перед скачиванием файлов необходимо определить разрядность Windows. Кликаем в Проводнике на «Этот компьютер» и выбираем «Свойства». К примеру, на скриншоте 64-разрядная Windows 10 Pro.
Скачиваем подходящие файлы, а затем перемещаем их в корневую папку. Для 32-разрядной ОС (x32) это директория C:WindowsSystem32, для 64-разрядной (x64) — C:Windows SysWOW64. Теперь библиотеки необходимо зарегистрировать в ОС. Используем для этого win+r, и в открывшейся строке введем regsvr32 имяфайла.dll.
Команда regsvr32 зарегистрирует элемент библиотеки имяфайла.dll. Подтверждаем OK, перезагружаем компьютер и продолжаем работу. Ошибка должна исчезнуть.
Регистрация dll-файла через командную строку
Запускаем командную консоль с админскими правами. Вводим regsvr32.exe C:/Windows/System32/имяфайла.dll и кликаем «Энтер».
Обязательно делаем перезагрузку компьютера.
Если после этого система сообщает, что не удается загрузить модуль, проверьте, правильно ли прописан путь к файлу, и лежит ли он в упомянутой выше корневой папке. Также dll-элемент может быть уже ранее зарегистрирован. Скачанные файлы сохраняйте в отдельной папке, возможно, они еще пригодятся. Используйте только актуальные библиотеки.
Если вдруг приложение либо игра не видит элемент dll, необходимо скопировать последний и вставить в директорию, где находится основной исполняемый exe-файл. После этого заново запускаем программу.
Как установить библиотеку DLL сторонними инструментами
Установить и зарегистрировать системные DLL возможно с помощью различных приложений, о которых речь пойдет ниже. Они способны автоматически найти недостающие библиотеки, проанализировать состояние ОС, проверить целостность реестра и создать резервные копии. При этом компоненты, связанные с .NET Framework, Visual C++ и DirectX, нужно скачивать с официальных сайтов, а конкретные ошибки в отдельных программах лучше решать с разработчиками проблемного ПО.
DLL Helper
DLL Helper — платный софт на русском языке. Обладает простым понятным интерфейсом и внушительным онлайн-хранилищем DLL-библиотек. Легко устанавливается. Для поиска нужных элементов достаточно знать их официальные наименования, данные им производителем.
Программа работает в двух режимах: «Простой» (предлагает только актуальные версии) и «Продвинутый» (предлагает все доступные версии). Существует возможность отката ранее установленных DLL.
Advanced PC Cleanup
Advanced PC Cleanup позволяет удалить временные элементы, зарегистрировать недостающие dll-файлы, исправить другие проблемы. Программа быстро обнаруживает отсутствующие библиотеки и предлагает исправить записи в реестре, отображая весь перечень проблемных файлов, откуда пользователь может сам выбрать компоненты для восстановления. ПО работает на английском языке, в бесплатном варианте и премиум-версии.
CCleaner
CCleaner проверяет наличие в системе элементов, способных снизить ее быстродействие. Обладает простым интерфейсом и позволяет во вкладках одного окна совершить множество действий по оптимизации работы компьютера. Программа сканирует реестр и среди других ошибок обнаруживает недостающие либо поврежденные записи о библиотеках. Поскольку CCleaner обладает обширным инструментарием, а не занимается исключительно dll-файлами, то проблемы с этими элементами не всегда удается успешно разрешить. Утилита работает на русском языке, обладает пробной и премиум-версией.
Advanced System Optimizer
Advanced System Optimizer выполняет те же функции, что и CCleaner. Запустив проверку реестра, пользователь получает перечень поврежденных файлов, среди которых есть и недостающие либо незарегистрированные dll-библиотеки. Можно сразу провести восстановление и избавиться от возникших проблем. Работает на русском языке и в бесплатном функционале позволяет выполнить поиск и исправление dll.
Есть и такие программы, как SpeedyPC Pro, SS Registry Fixer и т. д. Работают на русском и английском языках, являются бесплатными и условно-бесплатными, специализированными и общими утилитами. В последних главное — наличие функции исправления ошибок реестра, которая поможет найти и восстановить dll-библиотеки.
Точка входа не найдена в библиотеке dll
Иногда во время запуска программы либо игры компьютер выдает ошибку «Точка входа в процедуру не найдена в библиотеке DLL». Это означает, что нужный dll-файл не найден, поврежден или содержит ошибку в синтаксисе. Windows способна автоматически заменить отсутствующие или поврежденные системные элементы. Во всех остальных случаях решить проблему помогут нижеприведенные рекомендации.
- Скачайте и установите актуальную версию Visual C++ с официального сайта Microsoft. Запустите на своем компьютере обе вариации — и для 32-, и для 64-битной ОС.
- В командной строке с админскими правами используйте sfc /scannow. После ввода команды нажмите «Энтер». По окончании проверки системных файлов утилита сообщит о файлах, которые удалось либо не удалось восстановить.
- Возможно, ситуацию исправит переустановка проблемного софта.
- Перерегистрируйте dll-файл, открыв командную строку с админскими правами и используя команды «regsvr32/u a имяфайла.dll» и «regsvr32 a имя файла.dll» (без кавычек). После каждой команды щелкните «Энтер».
- Откатите операционную систему назад с помощью win+r и команды rstrui.exe. Кликните OK, выберите нужную точку восстановления и запустите процесс. После перезагрузки система будет работать по состоянию на указанную дату.
Продвинутым пользователям, самостоятельно устанавливающим Windows, можно рекомендовать инструмент Media Creation Tool. Он решит ошибку, когда система сообщит, что точка процедуры не найдена в библиотеке dll. С помощью этой утилиты необходимо создать загрузочный образ «Виндовс» на сайте Microsoft и произвести инсталляцию ОС с установочной флешки. Этот способ поможет извлечь и применить недостающие dll-файлы.
Заключение
Если, несмотря на предложенные инструкции, вам не удалось найти и зарегистрировать недостающие или поврежденные dll-библиотеки, обратитесь к сотрудникам «АйТиСпектр». Специалисты наладят работу операционной системы, а заодно помогут решить проблемы с работой других компонентов компьютера.
Насколько публикация полезна?
Нажмите на звезду, чтобы оценить!
Источник: itspectr.ru