Разработка DLL на языке С++, страница 3

Удобные настройки проекта

В данный момент вы уже можете построить DLL, но предварительно стоит подправить некоторые настройки проекта. Так как клиентское приложение должно видеть нашу DLL, то ее следует разместить в доступном месте. Самый быстрый способ решить проблему — поместить DLL в папку клиентского проекта. При этом обычно возникает другая, побочная проблема. Оба проекта редко остаются неизменными. Вы будете постоянно находить и исправлять какие-то ошибки, как в DLL (сервере), так и в EXE (клиенте). При этом вам каждый раз придется перемещать новую версию DLL из папки сервера в папку клиента. Это неудобно.

Известный трюк состоит в том, что вы один раз в настройках проекта указываете, желаемое местоположение DLL — в какой-либо легко доступной папке (например, C:/Debug). Это же следует проделать и для клиентского проекта (указав местоположение EXE-модуля). Тогда оба файла (клиент и сервер) всегды будут в одной и той же папке. Полезно завести привычку делать это при создании любого проекта. При этом значительно экономится время на отладку, да и место на диске. В общей папке С:/Debug будет много разных EXE и DLL-файлов с разными именами. Все друг друга видят и никаких проблем. Одну папку проще уничтожить, в ней проще найти последний проект. Для того, чтобы сделать подобные установки:

¨  Откройте диалог Property Pages, выделив проект и дав команду View4Property Pages.

¨  В дереве слева найдите и выделите узел Configuration Properties4General, а в списке справа найдите строку: Output Directory. Введите в нее такой путь C:/Debug.

¨  Далее, слева найдите и выделите узел Linker4General, а в списке справа найдите строку: Output File. Введите в нее такой путь C:/Debug/$(ProjectName).dll.

¨  Нажмите OK. Значение макроса $(ProjectName) зависит от имени вашего проекта.

¨  Постройте проект, дав команду Build4Rebuild Solution.

Признаком успеха является следующее сообщение. Оно должно появиться в окне Output4Build.

Creating library C:\Debug/MyDLL.lib and object C:\Debug/MyDLL.exp

Клиентское приложение

Теперь можно приступить к созданию клиентского приложения, которое воспользуется услугами нашей DLL. Контур главной программы вырисовывается таким:

¨  Запросить у пользователя размерность системы линейных алгебраических уравнений.

¨  Выделить память для расширенной матрицы системы и вектора неизвестных.

¨  Определить и заполнить матрицу способом, рассматриваемым ниже.

¨  Вызвать функцию, вычисляющую вектор неизвестных (методом Гаусса).

¨  Вывести результаты.

В соответствии со структурным подходом каждое из перечисленных действий можно оформить в виде отдельного программного модуля (функции C++). Главную программу можно записать, ввести и даже отладить, несмотря на то, что возможно еще нет кодов для других модулей: задания системы уравнений в виде расширенной матрицы и процедуры решения системы. Создайте новый проект клиентского приложения и добавьте его к уже существующему решению.

¨  В окне Solution Explorer выделите Solutionрешение. Будьте внимательны, выберите именно решение, а не проект. Из контекстного меню выберите команду Add4New Project.

¨  В диалоге Add New Project (в дереве Project Type) раскройте узел Visual C++ Projects4Win32. В окне Templates выберите шаблон — Win32 Console Project.

¨  В окне Name задайте имя решения MyDLLClient.

¨  В окне Location задайте местоположение проекта. Пусть он будет внутри папки MyDLL и нажмите OK.

¨  В окне мастера Win32 Application Wizard выберите страницу Application Settings, и убедитесь, что мастер действительно создает консольное и не пустое приложение.

¨  Нажмите Finish.

¨  Сразу настройте проект так, чтобы папка с выходным файлом была той же, что и для DLL. Откройте диалог Property Pages, выделив проект и дав команду View4Property Pages.