Меню

Как сделать файл dll если он заменен

Как установить DLL файлы на Windows?

Файл DLL – компонент динамически подключаемой библиотеки, чьи элементы используют практически все программы. Библиотека DLL файлов расположена в корневой папке системы. Компоненты должны быть все в наличии, иметь цифровую подпись, правильно работать и быть актуальными по версии. Если одно из требований не соблюдено, при запуске программы пользователь получит информационное уведомление: ошибка DLL. Неисправность свидетельствует о том, что отсутствует DLL файл, поврежден или устарел.

Как установить DLL файл

Чтобы программы, приложения и игры снова начали работать, необходимо установить вручную недостающие компоненты библиотеки. Просто поместить файл в папку недостаточно ─ нужно знать как их зарегистрировать.

Помещение и регистрация файлов библиотеки

Перед тем как установить DLL файл на Windows 7,8,10, их нужно скачать, причем точно под разрядность системы.

Давайте определим, какая разрядность у Вашей системы (если вы точно знаете, может пропустить этот шаг)

Шаг 1. Кликаем правой кнопкой мыши по «Мой компьютер» и выбираем «Свойства»

Шаг 2. В открывшемся окне, мы может прочитать свойства компьютера, версию операционной системы и её разрядность 32 (х86) или 64 бит. В нашем случаи стоит 64-разрядная операционная система Windows 10.

·

Шаг 3. После скачивания файлов их нужно поместить в корневую папку, зарегистрировать

для х32 (х86) систем компонент необходимо заменить или поместить в папку C:\Windows\System32;

для х64 необходимо выполнить замену или переместить в папку C:\Windows\ SysWOW64;

Шаг 4. Файл нужно зарегистрировать в системе.

Сделать это можно, открыв командную строку комбинацией «Win» + «R», или нажать «Пуск» и «Выполнить»;

в открывшемся окне ввести через пробел следующее: regsvr32 имя файла.dll – где, «regsvr32» ─ команда для регистрации, а «имя файла.dll» – полное имя вставленного компонента;

Шаг 5. Нажмите «ОК», и перезагрузите компьютер, и новые параметры вступят в силу.

Сразу хочется отметить, что при регистрации возможны появления ошибок. Например: «Не удалось загрузить модуль». Обычно они возникают по 3 причинам

Второй способ регистрации

Шаг 1. Зарегистрировать файл можно с помощью командой строки, которую нужно запустить от имени администратора.

Шаг 2. Пишем команду regsvr32.exe + путь к файлу и жмём «Enter»

Шаг 3. Появится сообщение что «Всё прошло удачно», и просто перезагружаем компьютер

Вот и всё, файл зарегистрирован, можете пробовать запускать вашу игру или программу

А вот, некоторые советы, которые могут вам пригодиться.

Источник

Статья Как создать dll библиотеку?

Cоздание файла dll

Очень часто в своей работе, Вы будете сталкиваться с такой ситуацией.

Перед вами стоит задача, нужно написать программу » Супер Блокнот» которая должна сохранить все функции стандартного блокнота, но при этом иметь ряд каких-то дополнительных функций, благодаря которым, при выборе программы для работы с текстом, пользователь будет отдавать предпочтение именно вашей программе. Для этого было решено добавить несколько новых функций, одна из них, будет отвечать за подсчет и вывод количества слов в тексте.

Через пару недель программа была написана, затем она попала в Интернет, пользователи оценили новый продукт и стали им пользоваться. Цель достигнута.

Проходит время и перед вами ставят новую задачу, написать программу «Супер парсер«. Одной из функции данной программы, будет подсчет слов в тексте. Вы понимаете, что снова придется разрабатывать метод, который будет вести подсчёт слов. Но, при этом вспоминаете, что совсем не давно уже разрабатывали программу, в которой применялась данная функция. Чтобы не изобретать велосипед, Вы открываете исходник программы «Супер блокнот«; и копируете весь метод в исходник новой программы «Супер парсер«. Отлично, теперь Вам не придется тратить время на написание этого метода заново, и Вы можете посветить больше времени остальным элементам программы. Задача решена.

Но, что если метод по подсчету слов, писали не Вы, а допустим, какой-нибудь коллега по работе и по каким-то причинам, Вы не можете получить доступ к исходному коду программы «Супер блокнот«. То есть первый вариант, копирование метода из исходника, не прокатит и данный метод придется писать самому ммм, печалька.

Но, тут вам звонит ваш коллега по работе и говорит: Ты знаешь, я тут вспомнил, когда я разрабатывал данный метод, я подумал, что возможно мне придется его использовать ещё где-то, и по этому я решил вынести его в отдельную сборку, в виде файла динамической библиотеки (dll).Ты просто скопируй этот файл dll в свой проект, и подключи его, как внешнюю сборку, после чего ты получишь доступ к моему методу и сможешь им пользоваться.

Отлично! Вы проделываете все описанные действия, в программе “Супер парсер” появляется нужный метод, задача решена и вам вновь не пришлось повторно писать код руками.

На этом присказка закончена и теперь переходим к более подробному изучению.

Как уже писал ранее, динамические библиотеки, позволяют повторно использовать ранее написанный код, а так же они обеспечивают лучшую переносимость кода. Достаточно, скинуть файл на флешку, или скачать dll файл из Интернета, после чего добавить его в текущий проект и тут же получить набор разных дополнительных функций для вашего приложения. Так же стоит знать, что в одном dll файле может храниться любое количество типов, членов и пространств имён.

Создание файла dll

Для начала выберем тип нового создаваемого приложения, а точнее проекта.

Выбираем Class Library, то есть создаем файл динамической библиотеки (dll)

Так же Вы можете указать, под какую версию Фреймворка будет создаваться данный проект.

После того, как Visual Studio создаст каркас проекта, Вы увидите следующее:

Так будет выглядеть окно Solution Explorer

А так будет выглядеть рабочая область, где Вы обычно пишите код программы

И так дано пространство имён: Car и класс: Class1. Class1 не удачное название, давайте немного изменим наш код, заменив Class1 на BMW, и добавим метод, который будет выводить имя нашего класса.

И так код написан, и теперь необходимо выполнить компиляцию, чтобы получить сборку.
Если сейчас попытаться нажать F5 или Ctrl+F5, то вы увидите данное окно

Данная ошибка, говорит лишь о том, что был создан файл динамической библиотеки (dll), а не исполняемый файл (exe), который не может быть запущен.

Для того, чтобы скомпилировать проект, нажмите клавишу F6, после чего в директории bin\Debug появиться файл Car.dll.

Чтобы проверить был ли создан файл библиотеки, воспользуйтесь кнопкой Show All Files на вкладке Solution Explorer

Сборка, в виде файла динамической библиотеки успешно создана.

Теперь перейдем в папку bin\Debug, для того, чтобы быстро переместиться в текущую директорию проекта, в том же Solution Explorer воспользуйтесь пунктом Open Folder in Windows Explorer

После чего закроем текущий проект и создадим новый. Но, на этот раз выберем тип проекта — консольное приложение.

Создаем новый проект.

Новый проект создан. Теперь подключим в текущий проект, нашу библиотеку (Car.dll)

Для этого на папке References, в окне Solution Explorer нужно нажать правую кнопку мыши и выбрать пункт Add Reference, откроется вот такое окно:

В окне Object Browser можно посмотреть содержимое нашей сборки.

Сборка подключена и теперь Вы можете работать с её содержимым. Далее выполним необязательный пункт.

Добавим, с помощью ключевого слова using пространство имен Car из созданной нами библиотеки Car.dll, после чего создадим объект класса BMW и выполним метод Вывести_Имя_Класса().

И в конце не много информации о типах сборок:

Сборки бывают следующих основных видов: общие и частные.

Частная сборка (private assembly)

Это файлы библиотек, как наш ранее созданный файл Car.dll, которые содержаться на протяжении всего времени в каталоге текущего приложения или любом из его подкаталогов.

Вернёмся к началу статьи.

После того, как было создано приложение “Супер парсер”, мы получили сборку в виде файла (exe). Затем мы решили протестировать нашу программу и отдаём её нашему другу, при этом Вы так же упоминаете, что если он хочет иметь дополнительные функции в программе, то ему нужно просто рядом с его exe файлом поместить файл библиотеки Car.dll. После чего он получит возможность подсчёта слов в тексте. То есть библиотека будет храниться в той же директории, что и исполняемый файл.

Общие сборки (shared assembly)

Это сборки, предназначенные для множественного использования разными приложениями, установленными на одном компьютере.

Источник

Открываем DLL-файлы для редактирования

DLL-библиотеки – это одна из разновидностей исполняемого файла, который может многократно использоваться каким-либо приложением или компонентом Windows. Благодаря этому происходит экономия дискового пространства, так как для каждого приложения не нужен отдельный файл с одинаковыми параметрами. Иногда у пользователя может возникнуть необходимость просмотреть содержимое DLL-файла или даже отредактировать его.

Как открыть DLL-файл для редактирования

DLL-файл ничем не отличается от любого другого файла с кодом, следовательно, может быть открыт с помощью специальных программ для просмотра или редактирования, в том числе и с помощью встроенного в Windows Блокнота. Однако мы бы рекомендовали вам использовать для редактирования более профессиональные программы, которые поддерживают подсветку синтаксиса кода и автоматическое исправление.

Редактируя DLL-файл не забывайте, что любое неверное изменение может привести к потери работоспособности некоторых программ, а иногда и все операционной системы. Действуйте на свой страх и риск. Далее рассмотрим несколько программ, с помощью которых можно выполнить редактирование DLL-файлов.

Программа 1: Блокнот

Самый примитивный вариант. Блокнот встроен по умолчанию во все операционные системы Windows. С его помощью можно открывать и редактировать практически любые файлы. К сожалению, функциональность здесь оставляет желать лучшего: нет подсветки, выделения ошибок, автоматического исправления и многих других интересных функций. Мы бы рекомендовали использовать его только для просмотра содержимого DLL-файла или внесения мелких корректировок.

Инструкция по редактированию DLL-файла с помощью программы Блокнот выглядит следующим образом:

После сохранения обязательно проверьте работоспособность файла.

Программа 2: Sublime Text 3

Данная программа уже нацелена именно на работу с исходным кодом файлов. Там есть подсветка кода, автоматическое определение и исправление ошибок. Плюс, функционал можно расширить за счет скачивания дополнительных плагинов. Официально Sublime Text 3 распространяется на платной основе, но вы можете пользоваться им бесплатно, но тогда каждые 30 минут будет появляться сообщение о необходимости купить полную версию.

Sublime Text 3 создавался в первую очередь для веб-разработчиков и смежных профессий, поэтому в DLL-файлах подсветки синтаксиса и автоматического исправления ошибок может не быть. Единственным удобством останется нумерация строк, благодаря чему будет удобно ориентироваться в документе.

Инструкция по открытию и обработке файлов в редакторе Sublime Text 3 выглядит следующим образом:

Программа 3: Hex Workshop

Более профессиональное ПО, предназначенное именно для работы с исполнительными файлами, в том числе и с расширением DLL. Подходит в основном очень продвинутым пользователям, так как отображает код файла по умолчанию в бинарном виде, но вы можете переключиться на другой вариант отображения. Плюс, в программе можно выполнить компиляцию полученного кода, чтобы сразу же проверить его на наличие ошибок.

Инструкция по работе с Hex Workshop выглядит следующим образом:

Программа 4: Resource Hacker

Это одна из самых популярных, удобных и продвинутых программа для редактирования содержимого исполняемых файлов. Здесь вы можете запускать их, изменять и снова запуска для отладки. В случае появления распространенных ошибок программа сама предложит варианты их решения. Ее преимущество над другими решениями заключается в грамотной структуризации и правильном отображении иерархии составляющих файла с отображением бинарного и привычного исходного кода.

Инструкция по работе с Resource Hacker для DLL-файлов выглядит следующим образом:

Программа 5: Среда разработки Embarcadero RAD Studio

Данный вариант в большей степени следует рассматривать профессиональным программистам, так как Embarcadero RAD Studio это уже профессиональная среда разработки. Помимо встроенного редактора здесь есть множество полезных инструментов, но при этом и сама программа занимает места больше и потребляет ресурсов компьютера больше, чем представленные выше варианты.

Давайте рассмотрим, как работать с файлами DLL с помощью программы Embarcadero RAD Studio:

Мы рассмотрели 5 программ, с помощью которых вы можете не только открыть DLL-файл для просмотра, но и выполнить его редактирование. В последнем случае мы рекомендуем выбирать более профессиональное ПО, а также создать копии DLL-файлов, чтобы в случае неудачи вы смогли снова вернуться к работоспособному элементу.

Источник

Пошаговое руководство. Создание и использование собственной библиотеки динамической компоновки (C++) Walkthrough: Create and use your own Dynamic Link Library (C++)

В этом пошаговом руководстве показано, как с помощью интегрированной среды разработки (IDE) Visual Studio создать собственную библиотеку динамической компоновки (DLL), написанную на Microsoft C++ (MSVC). This step-by-step walkthrough shows how to use the Visual Studio IDE to create your own dynamic link library (DLL) written in Microsoft C++ (MSVC). Далее в нем показано, как использовать библиотеку DLL из другого приложения C++. Then it shows how to use the DLL from another C++ app. Библиотеки DLL (также называемые общими библиотеками в операционных системах на основе UNIX) являются одним из наиболее полезных компонентов Windows. DLLs (also known as shared libraries in UNIX-based operating systems) are one of the most useful kinds of Windows components. Их можно использовать для обмена кодом и ресурсами, а также для уменьшения размера своих приложений. You can use them as a way to share code and resources, and to shrink the size of your apps. Библиотеки DLL могут упростить обслуживание и расширение приложений. DLLs can even make it easier to service and extend your apps.

Читайте также:  Как сделать подарок если человек в другом городе

В этом пошаговом руководстве вы создадите библиотеку DLL, которая реализует некоторые математические функции. In this walkthrough, you’ll create a DLL that implements some math functions. Затем вы создадите консольное приложение, использующее функции из библиотеки DLL. Then you’ll create a console app that uses the functions from the DLL. Попутно вы познакомитесь с некоторыми методами программирования и соглашениями, используемыми в библиотеках DLL для Windows. You’ll also get an introduction to some of the programming techniques and conventions used in Windows DLLs.

В этом пошаговом руководстве рассматриваются следующие задачи: This walkthrough covers these tasks:

Создание проекта библиотеки DLL в Visual Studio. Create a DLL project in Visual Studio.

Добавление экспортированных функций и переменных в библиотеку DLL. Add exported functions and variables to the DLL.

Создание проекта «Консольное приложение» в Visual Studio. Create a console app project in Visual Studio.

Использование в консольном приложении функций и переменных, импортированных из библиотеки DLL. Use the functions and variables imported from the DLL in the console app.

Запуск готового приложения. Run the completed app.

Как и в случае со статически связанной библиотекой, библиотека DLL экспортирует переменные, функции и ресурсы по имени. Like a statically linked library, a DLL exports variables, functions, and resources by name. Клиентское приложение импортирует имена для использования этих переменных, функций и ресурсов. A client app imports the names to use those variables, functions, and resources. В отличие от статически компонуемой библиотеки, Windows соединяет импорт в вашем приложении с экспортом в библиотеку DLL во время загрузки или выполнения, а не во время компоновки. Unlike a statically linked library, Windows connects the imports in your app to the exports in a DLL at load time or at run time, instead of connecting them at link time. Для выполнения этих подключений Windows требуются дополнительные сведения, которые не являются частью стандартной модели компиляции C++. Windows requires extra information that isn’t part of the standard C++ compilation model to make these connections. Чтобы предоставить эти дополнительные сведения, компилятор MSVC реализует некоторые специальные расширения Майкрософт для C++. The MSVC compiler implements some Microsoft-specific extensions to C++ to provide this extra information. Мы рассмотрим эти расширения далее. We explain these extensions as we go.

В этом пошаговом руководстве создаются два решения Visual Studio. Первое решение создает библиотеку DLL, а второе — клиентское приложение. This walkthrough creates two Visual Studio solutions; one that builds the DLL, and one that builds the client app. Библиотека DLL использует соглашение о вызовах языка C. The DLL uses the C calling convention. Ее можно вызывать из приложений, написанных на других языках программирования, при условии, что платформа, соглашения о вызовах и соглашения о связывании совпадают. It can be called from apps written in other programming languages, as long as the platform, calling conventions, and linking conventions match. Клиентское приложение использует неявную компоновку, в рамках которой Windows связывает приложение с библиотекой DLL во время загрузки. The client app uses implicit linking, where Windows links the app to the DLL at load-time. Эта компоновка позволяет приложению вызывать функции, предоставляемые библиотекой DLL, точно так же, как функции в библиотеке статической компоновки. This linking lets the app call the DLL-supplied functions just like the functions in a statically linked library.

В этом пошаговом руководстве не рассматриваются некоторые общие ситуации. This walkthrough doesn’t cover some common situations. В нем не рассматривается использование библиотеки DLL для C++ другими языками. The code doesn’t show the use of C++ DLLs by other programming languages. Он не показывает, как создавать DLL-библиотеки только для ресурсов или как использовать явную компоновку для загрузки библиотек DLL во время выполнения, а не во время загрузки. It doesn’t show how to create a resource-only DLL, or how to use explicit linking to load DLLs at run-time rather than at load-time. Уверяем вас, все это можно выполнять с помощью MSVC и Visual C++. Rest assured, you can use MSVC and Visual Studio to do all these things.

Предварительные требования Prerequisites

Базовые значения об использовании интегрированной среды разработки Visual Studio. An understanding of the basics of using the Visual Studio IDE. Если вы уже использовали классические приложения для Windows, вы, вероятно, справитесь. If you’ve used Windows desktop apps before, you can probably keep up. Общие сведения см. в обзоре возможностей интегрированной среды разработки Visual Studio. For an introduction, see Visual Studio IDE feature tour.

Основные навыки владения языком C++. An understanding of enough of the fundamentals of the C++ language to follow along. Не волнуйтесь, мы не будем делать ничего сложного. Don’t worry, we don’t do anything too complicated.

В данном пошаговом руководстве подразумевается, что вы используете Visual Studio 2017 версии 15.9 или более поздней. This walkthrough assumes you’re using Visual Studio 2017 version 15.9 or later. В некоторых более ранних версиях Visual Studio 2017 имелись дефекты в шаблонах кода или использовались разные диалоговые окна пользовательского интерфейса. Some earlier versions of Visual Studio 2017 had defects in the code templates, or used different user interface dialogs. Чтобы избежать проблем, используйте Visual Studio Installer для обновления Visual Studio 2017 до версии 15.9 или более поздней. To avoid problems, use the Visual Studio Installer to update Visual Studio 2017 to version 15.9 or later.

Создание проекта библиотеки DLL Create the DLL project

Этот набор задач позволяет создать проект для библиотеки DLL, добавить код и выполнить его сборку. In this set of tasks, you create a project for your DLL, add code, and build it. Для начала запустите IDE Visual Studio и выполните вход, если это необходимо. To begin, start the Visual Studio IDE, and sign in if you need to. Инструкции немного отличаются в зависимости от используемой версии Visual Studio. The instructions vary slightly depending on which version of Visual Studio you’re using. Убедитесь, что в элементе управления в верхнем левом углу этой страницы выбрана правильная версия. Make sure you have the correct version selected in the control in the upper left of this page.

Создание проекта библиотеки DLL в Visual Studio 2019 To create a DLL project in Visual Studio 2019

В строке меню выберите Файл > Создать > Проект, чтобы открыть диалоговое окно Создание проекта. On the menu bar, choose File > New > Project to open the Create a New Project dialog box.

На странице Настроить новый проект введите MathLibrary в поле Имя проекта. In the Configure your new project page, enter MathLibrary in the Project name box to specify a name for the project. Примите заданные по умолчанию Расположение и Имя решения. Leave the default Location and Solution name values. Для параметра Решение задайте Создать новое решение. Set Solution to Create new solution. Снимите флажок Разместить решение и проект в одном каталоге, если он установлен. Uncheck Place solution and project in the same directory if it’s checked.

Нажмите кнопку Создать, чтобы создать проект. Choose the Create button to create the project.

После создания решения созданный проект вместе с исходными файлами отобразится в окне обозревателя решений в Visual Studio. When the solution is created, you can see the generated project and source files in the Solution Explorer window in Visual Studio.

Создание проекта библиотеки DLL в Visual Studio 2017 To create a DLL project in Visual Studio 2017

В строке меню последовательно выберите пункты Файл > Создать > Проект, чтобы открыть диалоговое окно Новый проект. On the menu bar, choose File > New > Project to open the New Project dialog box.

Нажмите кнопку ОК, чтобы создать проект. Choose the OK button to create the project.

После создания решения созданный проект вместе с исходными файлами отобразится в окне обозревателя решений в Visual Studio. When the solution is created, you can see the generated project and source files in the Solution Explorer window in Visual Studio.

Создание проекта библиотеки DLL в Visual Studio 2015 и более ранних версий To create a DLL project in Visual Studio 2015 and older versions

В строке меню щелкните Файл > Создать > Проект. On the menu bar, choose File > New > Project.

Нажмите кнопку ​​ОК, чтобы закрыть диалоговое окно Новый проект, и запустите мастер приложений Win32. Choose the OK button to dismiss the New Project dialog and start the Win32 Application Wizard.

Нажмите кнопку Далее. Choose the Next button. На странице Параметры приложения в поле Тип приложения выберите пункт DLL. On the Application Settings page, under Application type, select DLL.

Когда мастер завершит создание решения, вы сможете увидеть созданный проект вместе с исходными файлами в окне обозревателя решений в Visual Studio. When the wizard completes the solution, you can see the generated project and source files in the Solution Explorer window in Visual Studio.

Пока эта библиотека DLL ничего не делает. Right now, this DLL doesn’t do very much. Затем вы создадите файл заголовка для объявления функций, экспортируемых вашей библиотекой DLL, и добавите определения функций в библиотеку DLL, чтобы сделать ее более полезной. Next, you’ll create a header file to declare the functions your DLL exports, and then add the function definitions to the DLL to make it more useful.

Добавление файла заголовка в библиотеку DLL To add a header file to the DLL

Чтобы создать файл заголовка для функций, последовательно щелкните Проект > Добавить новый элемент. To create a header file for your functions, on the menu bar, choose Project > Add New Item.

Нажмите кнопку ​​Добавить, чтобы создать пустой файл заголовка, который отображается в новом окне редактора. Choose the Add button to generate a blank header file, which is displayed in a new editor window.

Замените все содержимое этого файла заголовка следующим кодом: Replace the contents of the header file with this code:

Этот файл заголовка объявляет некоторые функции для создания обобщенной последовательности Фибоначчи, исходя из двух начальных значений. This header file declares some functions to produce a generalized Fibonacci sequence, given two initial values. Вызов fibonacci_init(1, 1) создает знакомую последовательность чисел Фибоначчи. A call to fibonacci_init(1, 1) generates the familiar Fibonacci number sequence.

Обратите внимание на операторы препроцессора в верхней части файла. Notice the preprocessor statements at the top of the file. Шаблон нового проекта для библиотеки DLL добавляет PROJECTNAME_EXPORTS к определенным макросам препроцессора. The new project template for a DLL project adds PROJECTNAME_EXPORTS to the defined preprocessor macros. В этом примере Visual Studio определяет MATHLIBRARY_EXPORTS при сборке проекта библиотеки DLL MathLibrary. In this example, Visual Studio defines MATHLIBRARY_EXPORTS when your MathLibrary DLL project is built.

Когда макрос MATHLIBRARY_EXPORTS определен, макрос MATHLIBRARY_API устанавливает модификатор __declspec(dllexport) в объявлениях функций. When the MATHLIBRARY_EXPORTS macro is defined, the MATHLIBRARY_API macro sets the __declspec(dllexport) modifier on the function declarations. Этот модификатор предписывает компилятору и компоновщику экспортировать функцию или переменную из библиотеки DLL для использования другими приложениями. This modifier tells the compiler and linker to export a function or variable from the DLL for use by other applications. Если MATHLIBRARY_EXPORTS не определен, например, когда файл заголовка включен клиентским приложением, MATHLIBRARY_API применяет модификатор __declspec(dllimport) к объявлениям. When MATHLIBRARY_EXPORTS is undefined, for example, when the header file is included by a client application, MATHLIBRARY_API applies the __declspec(dllimport) modifier to the declarations. Этот модификатор оптимизирует импорт функции или переменной в приложении. This modifier optimizes the import of the function or variable in an application. Дополнительные сведения см. в статье dllexport, dllimport. For more information, see dllexport, dllimport.

Читайте также:  Как сделать чтобы клавиатура на ноутбуке светилась леново

Добавление реализации в библиотеку DLL To add an implementation to the DLL

В окне редактора выберите вкладку MathLibrary.cpp, если она уже открыта. In the editor window, select the tab for MathLibrary.cpp if it’s already open. Если нет, то в обозревателе решений дважды щелкните файл MathLibrary.cpp в папке Исходные файлы проекта MathLibrary. If not, in Solution Explorer, double-click MathLibrary.cpp in the Source Files folder of the MathLibrary project to open it.

В редакторе замените содержимое файла MathLibrary.cpp следующим кодом: In the editor, replace the contents of the MathLibrary.cpp file with the following code:

В окне редактора выберите вкладку MathLibrary.cpp, если она уже открыта. In the editor window, select the tab for MathLibrary.cpp if it’s already open. Если нет, то в обозревателе решений дважды щелкните файл MathLibrary.cpp в папке Исходные файлы проекта MathLibrary. If not, in Solution Explorer, double-click MathLibrary.cpp in the Source Files folder of the MathLibrary project to open it.

В редакторе замените содержимое файла MathLibrary.cpp следующим кодом: In the editor, replace the contents of the MathLibrary.cpp file with the following code:

Чтобы убедиться, что все работает, скомпилируйте библиотеку динамической компоновки. To verify that everything works so far, compile the dynamic link library. Чтобы выполнить компиляцию, последовательно выберите Сборка > Собрать решение. To compile, choose Build > Build Solution on the menu bar. Библиотека DLL и связанные выходные данные компилятора помещаются в папку с именем Debug непосредственно под папкой решения. The DLL and related compiler output are placed in a folder called Debug directly below the solution folder. При создании сборки выпуска выходные данные помещаются в папку с именем Release. If you create a Release build, the output is placed in a folder called Release. Результат должен выглядеть следующим образом. The output should look something like this:

Поздравляем, вы создали библиотеку DLL с помощью Visual Studio! Congratulations, you’ve created a DLL using Visual Studio! Далее вы создадите клиентское приложение, которое использует функции, экспортируемые из библиотеки DLL. Next, you’ll create a client app that uses the functions exported by the DLL.

Создание клиентского приложения, которое использует библиотеку DLL Create a client app that uses the DLL

При создании библиотеки DLL подумайте о том, как клиентские приложения могут его использовать. When you create a DLL, think about how client apps may use it. Чтобы вызвать функции или получить доступ к данным, экспортированным библиотекой DLL, исходный код клиента должен иметь объявления, доступные во время компиляции. To call the functions or access the data exported by a DLL, client source code must have the declarations available at compile time. Во время компоновки компоновщику требуются сведения для разрешения вызовов функций или доступа к данным. At link time, the linker requires information to resolve the function calls or data accesses. Библиотека DLL предоставляет эти сведения в библиотеке импорта — файле, который содержит сведения о поиске функций и данных вместо фактического кода. A DLL supplies this information in an import library, a file that contains information about how to find the functions and data, instead of the actual code. Во время выполнения библиотека DLL должна быть доступна клиенту в месте, которое может найти операционная система. And at run time, the DLL must be available to the client, in a location that the operating system can find.

Независимо от того, является ли он вашим или предоставлен сторонним разработчиком, вашему проекту клиентского приложения требуется несколько фрагментов информации для использования библиотеки DLL. Whether it’s your own or from a third-party, your client app project needs several pieces of information to use a DLL. Ему необходимо найти заголовки, в которых объявляются экспорты библиотеки DLL, библиотеки импорта для компоновщика и сама библиотека DLL. It needs to find the headers that declare the DLL exports, the import libraries for the linker, and the DLL itself. Одним из решений является копирование всех этих файлов в ваш клиентский проект. One solution is to copy all of these files into your client project. Для сторонних библиотек DLL, которые вряд ли изменятся во время разработки вашего клиента, этот метод может быть лучшим способом их использования. For third-party DLLs that are unlikely to change while your client is in development, this method may be the best way to use them. Однако, когда вы также создаете библиотеку DLL, лучше избегать дублирования. However, when you also build the DLL, it’s better to avoid duplication. Если вы делаете локальную копию файлов библиотеки DLL, которые находятся в стадии разработки, вы можете случайно изменить файл заголовка только в одной копии или использовать устаревшую библиотеку. If you make a local copy of DLL files that are under development, you may accidentally change a header file in one copy but not the other, or use an out-of-date library.

Чтобы избежать рассинхронизации, мы рекомендуем вам установить путь включения в своем клиентском проекте, чтобы добавить файлы заголовков библиотеки DLL напрямую из проекта DLL. To avoid out-of-sync code, we recommend you set the include path in your client project to include the DLL header files directly from your DLL project. Кроме того, укажите путь к библиотеке в своем клиентском проекте, чтобы добавить библиотеки импорта DLL из проекта DLL. Also, set the library path in your client project to include the DLL import libraries from the DLL project. Наконец, скопируйте встроенную библиотеку DLL из проекта DLL в выходной каталог своей сборки клиента. And finally, copy the built DLL from the DLL project into your client build output directory. Этот шаг позволяет вашему клиентскому приложению использовать тот же код библиотеки DLL, который вы создали. This step allows your client app to use the same DLL code you build.

Создание клиентского приложения в Visual Studio To create a client app in Visual Studio

В строке меню выберите Файл > Создать > Проект, чтобы открыть диалоговое окно Создание проекта. On the menu bar, choose File > New > Project to open the Create a new project dialog box.

В отфильтрованном списке типов проектов щелкните Консольное приложение, а затем нажмите кнопку Далее. From the filtered list of project types, choose Console App then choose Next.

На странице Настроить новый проект введите MathClient в поле Имя проекта. In the Configure your new project page, enter MathClient in the Project name box to specify a name for the project. Примите заданные по умолчанию Расположение и Имя решения. Leave the default Location and Solution name values. Для параметра Решение задайте Создать новое решение. Set Solution to Create new solution. Снимите флажок Разместить решение и проект в одном каталоге, если он установлен. Uncheck Place solution and project in the same directory if it’s checked.

Нажмите кнопку Создать, чтобы создать клиентский проект. Choose the Create button to create the client project.

Создается минимальный проект консольного приложения. A minimal console application project is created for you. Имя главного исходного файла будет совпадать с ранее введенным именем проекта. The name for the main source file is the same as the project name that you entered earlier. В этом примере используется имя MathClient.cpp. In this example, it’s named MathClient.cpp. Вы можете создать проект, но он еще не использует вашу библиотеку DLL. You can build it, but it doesn’t use your DLL yet.

Создание клиентского приложения в Visual Studio 2017 To create a client app in Visual Studio 2017

Чтобы создать приложение C++, которое использует созданную вами библиотеку DLL, в строке меню выберите Файл > Создать > Проект. To create a C++ app that uses the DLL that you created, on the menu bar, choose File > New > Project.

«Visual C++» > «Windows Desktop» с выделенным пунктом «Консольное приложение Windows» и MathClient в текстовом поле «Имя».» title=»Присвоение имени клиентскому проекту» data-linktype=»relative-path»> Visual C plus plus > Windows Desktop selected, Windows Console Application highlighted, and Math Client typed in the Name text box.» title=»Name the client project» data-linktype=»relative-path»>

Нажмите кнопку ОК, чтобы создать проект клиентского приложения. Choose OK to create the client app project.

Создается минимальный проект консольного приложения. A minimal console application project is created for you. Имя главного исходного файла будет совпадать с ранее введенным именем проекта. The name for the main source file is the same as the project name that you entered earlier. В этом примере используется имя MathClient.cpp. In this example, it’s named MathClient.cpp. Вы можете создать проект, но он еще не использует вашу библиотеку DLL. You can build it, but it doesn’t use your DLL yet.

Создание клиентского приложения в Visual Studio 2015 To create a client app in Visual Studio 2015

Чтобы создать приложение C++, которое использует созданную вами библиотеку DLL, в строке меню выберите Файл > Создать > Проект. To create a C++ app that uses the DLL that you created, on the menu bar, choose File > New > Project.

«Шаблоны» > «Visual C++» > «Win32» с выделенным пунктом «Консольное приложение Win32 Visual C++» и MathClient в текстовом поле «Имя».» title=»Присвоение имени клиентскому проекту» data-linktype=»relative-path»> Templates > Visual C plus plus > Win32 selected, Win32 Console Application Visual C plus plus highlighted, and Math Client typed in the Name text box.» title=»Name the client project» data-linktype=»relative-path»>

На странице Параметры приложения в поле Тип приложения выберите пункт Консольное приложение, если он еще не выбран. On the Application Settings page, under Application type, select Console application if it isn’t already selected.

После завершения работы мастера создается минимальный проект консольного приложения. When the wizard finishes, a minimal console application project is created for you. Имя главного исходного файла будет совпадать с ранее введенным именем проекта. The name for the main source file is the same as the project name that you entered earlier. В этом примере используется имя MathClient.cpp. In this example, it’s named MathClient.cpp. Вы можете создать проект, но он еще не использует вашу библиотеку DLL. You can build it, but it doesn’t use your DLL yet.

Затем, чтобы вызвать функции MathLibrary в исходном коде, ваш проект должен содержать файл MathLibrary.h. Next, to call the MathLibrary functions in your source code, your project must include the MathLibrary.h file. Этот файл заголовка можно скопировать в проект клиентского приложения, а затем добавить его в проект как существующий элемент. You could copy this header file into your client app project, then add it to the project as an existing item. Этот метод подходит для сторонних библиотек. This method can be a good choice for third-party libraries. Однако если вы работаете с кодом для библиотеки DLL и клиента одновременно, файлы заголовков могут оказаться несинхронизированными. Чтобы избежать этой проблемы, задайте путь Дополнительные каталоги включаемых файлов в проекте, чтобы добавить путь к исходному заголовку. However, if you’re working on the code for your DLL and your client at the same time, the header files could get out of sync. To avoid this issue, set the Additional Include Directories path in your project to include the path to the original header.

Добавление заголовка библиотеки DLL в путь включения To add the DLL header to your include path

Щелкните правой кнопкой мыши узел MathClient в обозревателе решений, чтобы открыть диалоговое окно Страницы свойств. Right-click on the MathClient node in Solution Explorer to open the Property Pages dialog.

В раскрывающемся списке Конфигурация выберите пункт Все конфигурации, если он еще не выбран. In the Configuration drop-down box, select All Configurations if it’s not already selected.

В области слева выберите пункт Свойства конфигурации > C/C++ > Общие. In the left pane, select Configuration Properties > C/C++ > General.

На панели свойств щелкните раскрывающийся элемент управления рядом с полем ввода параметра Дополнительные каталоги включаемых файлов, а затем щелкните Правка. In the property pane, select the drop-down control next to the Additional Include Directories edit box, and then choose Edit.

![Редактирование свойства «Дополнительные каталоги включаемых файлов»](media/mathclient-additional-include-directories-property.png «Редактирование свойства «Дополнительные каталоги включаемых файлов»»)

Дважды щелкните в верхней панели диалогового окна Дополнительные каталоги включаемых файлов, чтобы включить элемент управления «Поле ввода». Double-click in the top pane of the Additional Include Directories dialog box to enable an edit control. Или щелкните значок папки, чтобы создать новую запись. Or, choose the folder icon to create a new entry.

Читайте также:  Как сделать чтобы в моей группе размещали рекламу

В элементе управления «Поле ввода» укажите путь к расположению файла заголовка MathLibrary.h. In the edit control, specify the path to the location of the MathLibrary.h header file. Чтобы перейти к нужной папке, можно выбрать элемент управления с многоточием ( . ). You can choose the ellipsis (. ) control to browse to the correct folder.

Можно также ввести относительный путь от исходных файлов клиента к папке, содержащей файлы заголовков библиотеки DLL. You can also enter a relative path from your client source files to the folder that contains the DLL header files. Если вы следовали инструкциям по размещению клиентского проекта в отдельном решении, отличном от библиотеки DLL, относительный путь должен выглядеть следующим образом: If you followed the directions to put your client project in a separate solution from the DLL, the relative path should look like this:

Если библиотеки DLL и клиентские проекты находятся в одном решении, относительный путь может выглядеть следующим образом: If your DLL and client projects are in the same solution, the relative path might look like this:

Если библиотеки DLL и клиентские проекты находятся в других папках, измените относительный путь для соответствия. When the DLL and client projects are in other folders, adjust the relative path to match. Или используйте элемент управления «Многоточие» для поиска папки. Or, use the ellipsis control to browse for the folder.

![Добавление расположения заголовка в свойство «Дополнительные каталоги включаемых файлов»](media/mathclient-additional-include-directories.png «Добавление расположения заголовка в свойство «Дополнительные каталоги включаемых файлов»»)

После ввода пути к файлу заголовка в диалоговом окне Дополнительные каталоги включаемых файлов нажмите кнопку ОК. After you’ve entered the path to the header file in the Additional Include Directories dialog box, choose the OK button. В диалоговом окне Страницы свойств нажмите кнопку OK, чтобы сохранить изменения. In the Property Pages dialog box, choose the OK button to save your changes.

Теперь можно добавить файл MathLibrary.h и использовать функции, которые он объявляет, в вашем клиентском приложении. You can now include the MathLibrary.h file and use the functions it declares in your client application. Замените содержимое файла MathClient.cpp, используя следующий код: Replace the contents of MathClient.cpp by using this code:

Этот код может быть скомпилирован, но не скомпилирован. This code can be compiled, but not linked. Если вы создаете клиентское приложение, в списке ошибок появится несколько ошибок LNK2019. If you build the client app now, the error list shows several LNK2019 errors. Это связано с тем, что в проекте отсутствуют некоторые сведения: Вы не указали, что проект пока еще зависит от библиотеки MathLibrary.lib. That’s because your project is missing some information: You haven’t specified that your project has a dependency on the MathLibrary.lib library yet. И вы не указали компоновщику, как найти файл MathLibrary.lib. And, you haven’t told the linker how to find the MathLibrary.lib file.

Чтобы устранить эту проблему, можно скопировать файл библиотеки непосредственно в проект клиентского приложения. To fix this issue, you could copy the library file directly into your client app project. Компоновщик сможет найти и использовать его автоматически. The linker would find and use it automatically. Однако если и библиотека, и клиентское приложение находятся в стадии разработки, это может привести к изменениям в одной копии, которые не будут отображаться в другой. However, if both the library and the client app are under development, that might lead to changes in one copy that aren’t shown in the other. Чтобы избежать этой проблемы, можно задать свойство Дополнительные зависимости, чтобы сообщить системе сборки о том, что проект зависит от MathLibrary.lib. To avoid this issue, you can set the Additional Dependencies property to tell the build system that your project depends on MathLibrary.lib. Также можно задать путь Дополнительные каталоги библиотек в проекте, включив в него путь к исходной библиотеке при компоновке. And, you can set an Additional Library Directories path in your project to include the path to the original library when you link.

Добавление библиотеки импорта DLL в проект To add the DLL import library to your project

Щелкните правой кнопкой мыши узел MathClient в обозревателе решений и выберите Свойства, чтобы открыть диалоговое окно Страницы свойств. Right-click on the MathClient node in Solution Explorer and choose Properties to open the Property Pages dialog.

В раскрывающемся списке Конфигурация выберите пункт Все конфигурации, если он еще не выбран. In the Configuration drop-down box, select All Configurations if it’s not already selected. Это гарантирует, что любые изменения свойств применяются к сборкам отладки и выпуска. It ensures that any property changes apply to both Debug and Release builds.

В области слева выберите пункт Свойства конфигурации > Компоновщик > Ввод. In the left pane, select Configuration Properties > Linker > Input. На панели свойств щелкните раскрывающийся элемент управления рядом с полем ввода параметра Дополнительные зависимости, а затем щелкните Правка. In the property pane, select the drop-down control next to the Additional Dependencies edit box, and then choose Edit.

В диалоговом окне Дополнительные зависимости добавьте MathLibrary.lib в список в верхнем элементе управления «Поле ввода». In the Additional Dependencies dialog, add MathLibrary.lib to the list in the top edit control.

Нажмите кнопку OK, чтобы вернуться в диалоговое окно Страницы свойств. Choose OK to go back to the Property Pages dialog box.

В области слева выберите пункт Свойства конфигурации > Компоновщик > Общие. In the left pane, select Configuration Properties > Linker > General. На панели свойств щелкните раскрывающийся элемент управления рядом с полем ввода параметра Дополнительные каталоги библиотек, а затем щелкните Правка. In the property pane, select the drop-down control next to the Additional Library Directories edit box, and then choose Edit.

Если библиотеки DLL и клиентские проекты находятся в других расположениях, измените относительный путь для соответствия. If your DLL and client projects are in other locations, adjust the relative path to match.

Как только вы ввели путь к файлу библиотеки, в диалоговом окне Дополнительные каталоги библиотек нажмите кнопку ОК, чтобы вернуться в диалоговое окно Страницы свойств. Once you’ve entered the path to the library file in the Additional Library Directories dialog box, choose the OK button to go back to the Property Pages dialog box. Нажмите ОК, чтобы сохранить изменения свойств. Choose OK to save the property changes.

Ваше клиентское приложение теперь можно компилировать и компоновать, но в нем по-прежнему нет всего необходимого для запуска. Your client app can now compile and link successfully, but it still doesn’t have everything it needs to run. Когда операционная система загружает ваше приложение, оно ищет библиотеку DLL MathLibrary. When the operating system loads your app, it looks for the MathLibrary DLL. Если она не может найти библиотеку DLL в определенных системных каталогах, в пути среды или локальном каталоге приложения, загрузка завершается сбоем. If it can’t find the DLL in certain system directories, the environment path, or the local app directory, the load fails. В зависимости от операционной системы вы увидите сообщение об ошибке следующего вида: Depending on the operating system, you’ll see an error message like this:

Чтобы избежать этой проблемы, можно скопировать библиотеку DLL в каталог, в котором находится исполняемый файл клиента, в процессе сборки. One way to avoid this issue is to copy the DLL to the directory that contains your client executable as part of the build process. Можно добавить событие после сборки в ваш проект, чтобы добавить команду, которая копирует библиотеку DLL в выходной каталог вашей сборки. You can add a Post-Build Event to your project, to add a command that copies the DLL to your build output directory. Указанная здесь команда копирует библиотеку DLL только в том случае, если она отсутствует или была изменена. The command specified here copies the DLL only if it’s missing or has changed. Он использует макросы для копирования в расположения отладки или выпуска на основе конфигурации сборки. It uses macros to copy to and from the Debug or Release locations, based on your build configuration.

Копирование библиотеки DLL в событие после сборки To copy the DLL in a post-build event

Щелкните правой кнопкой мыши узел MathClient в обозревателе решений и выберите Свойства, чтобы открыть диалоговое окно Страницы свойств. Right-click on the MathClient node in Solution Explorer and choose Properties to open the Property Pages dialog.

В раскрывающемся списке Конфигурация выберите пункт Все конфигурации, если он еще не выбран. In the Configuration drop-down box, select All Configurations if it isn’t already selected.

В области слева выберите Свойства конфигурации > События сборки > Событие после сборки. In the left pane, select Configuration Properties > Build Events > Post-Build Event.

В области свойств щелкните элемент управления «Поле ввода» в поле Командная строка. In the property pane, select the edit control in the Command Line field. Если вы следовали инструкциям по размещению клиентского проекта в отдельном решении, отличном от проекта DLL, введите следующую команду: If you followed the directions to put your client project in a separate solution from the DLL project, then enter this command:

xcopy /y /d «..\..\MathLibrary\$(IntDir)MathLibrary.dll» «$(OutDir)»

Если библиотеки DLL и клиентские проекты находятся в других каталогах, измените относительный путь к библиотеке DLL для соответствия. If your DLL and client projects are in other directories, change the relative path to the DLL to match.

Нажмите кнопку OK, чтобы сохранить изменения в свойствах проекта. Choose the OK button to save your changes to the project properties.

Теперь в вашем клиентском приложении есть все, что нужно для сборки и запуска. Now your client app has everything it needs to build and run. Соберите приложение, щелкнув команду Сборка > Собрать решение в меню. Build the application by choosing Build > Build Solution on the menu bar. Окно Вывод в Visual Studio должно иметь примерно следующий вид в зависимости от используемой версии Visual Studio: The Output window in Visual Studio should have something like the following example depending on your version of Visual Studio:

Поздравляем, вы создали приложение, которое вызывает функции в вашей библиотеке DLL. Congratulations, you’ve created an application that calls functions in your DLL. Теперь запустите свое приложение, чтобы увидеть, как оно работает. Now run your application to see what it does. В строке меню щелкните Отладка > Начать без отладки. On the menu bar, choose Debug > Start Without Debugging. В Visual Studio открывается командное окно для запуска программы. Visual Studio opens a command window for the program to run in. Последняя часть выходных данных должна выглядеть так: The last part of the output should look like:

Для закрытия командного окна нажмите любую клавишу. Press any key to dismiss the command window.

Теперь, когда вы создали библиотеку DLL и клиентское приложение, вы можете экспериментировать. Now that you’ve created a DLL and a client application, you can experiment. Попробуйте задать точки останова в коде клиентского приложения и запустите приложение в отладчике. Try setting breakpoints in the code of the client app, and run the app in the debugger. Посмотрите, что происходит, когда вы входите в вызов библиотеки. See what happens when you step into a library call. Добавьте другие функции в библиотеку или напишите другое клиентское приложение, которое использует вашу библиотеку DLL. Add other functions to the library, or write another client app that uses your DLL.

При развертывании приложения необходимо также развернуть используемые им библиотеки DLL. When you deploy your app, you must also deploy the DLLs it uses. Самый простой способ сделать библиотеки DLL, которые вы создаете или добавляете из сторонних источников, доступными — поместить их в тот же каталог, что и ваше приложение. The simplest way to make the DLLs that you build, or that you include from third parties, available is to put them in the same directory as your app. Это также называется локальным развертыванием приложений. It’s known as app-local deployment. Дополнительные сведения о развертывании см. в разделе Deployment in Visual C++. For more information about deployment, see Deployment in Visual C++.

Источник

Adblock
detector