Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Создание приложения, ссылающегося на DLL




1. Чтобы создать приложение С++, которое будет ссылаться и использовать созданную ранее библиотеку DLL, в меню Файл выберите пункт Создать и затем пункт Проект.

2. В левой области в категории Visual C++ выберите Win32.

3. В центральной области выберите Консольное приложение Win32.

4. Укажите имя проекта, например MyExecRefsDll, в поле Имя. В раскрывающемся списке рядом с полем Решение выберите Добавить в решение. В результате новый проект будет добавлен в решение, содержащее библиотеку DLL. Нажмите кнопку ОК.

5. На странице Обзор диалогового окна Мастер приложений Win32 нажмите кнопку Далее.

6. На странице Параметры приложения выберите в поле Тип приложения пункт Консольное приложение.

7. На странице Параметры приложения в разделе Дополнительные параметры снимите флажок Предкомпилированный заголовок.

8. Нажмите кнопку Готово, чтобы создать проект.

Использование функциональности из библиотеки классов в приложении

1. После создания консольного приложения будет создана пустая программа. Имя исходного файла будет совпадать с ранее выбранным именем. В этом примере он имеет имя MyExecRefsDll.cpp.

2. Для использования в приложении математических процедур, созданных в библиотеке DLL, необходимо сослаться на эту библиотеку. Для этого в Обозревателе решений выберите проект MyExecRefsDll, а затем в меню Проект выберите пункт Ссылки. В диалоговом окне Страницы свойств разверните узел Общие свойства, выберите .NET Framework и ссылки и нажмите кнопку Добавить новую ссылку.

3. В диалоговом окне Добавление ссылки перечислены библиотеки, на которые можно создать ссылку.На вкладке Проект перечислены все проекты текущего решения и включенные в них библиотеки, если они есть. Установите флажок рядом с MathFuncsDll на вкладке Проекты, а затем нажмите кнопку ОК.

4. Для создания ссылки на файлы заголовка DLL необходимо изменить путь к каталогам включения. Для этого в диалоговом окне Страницы свойств последовательно разверните узлы Свойства конфигурации и C/C++, а затем выберите Общие. В поле Дополнительные каталоги включаемых файлов укажите путь к месту размещения файла заголовка MathFuncsDll.h. Можно использовать относительный путь, например..\MathFuncsDll\. Затем нажмите кнопку ОК.

5. Теперь класс MyMathFuncs можно использовать в приложении. Замените содержимое файла MyExecRefsDll.cpp следующим кодом.

// MyExecRefsDll.cpp

// compile with: /EHsc /link MathFuncsDll.lib

#include <iostream>

#include "MathFuncsDll.h"

using namespace std;

int main()

{

double a = 7.4;

int b = 99;

cout << "a + b = " <<

MathFuncs::MyMathFuncs::Add(a, b) << endl;

cout << "a - b = " <<

MathFuncs::MyMathFuncs::Subtract(a, b) << endl;

cout << "a * b = " <<

MathFuncs::MyMathFuncs::Multiply(a, b) << endl;

cout << "a / b = " <<

MathFuncs::MyMathFuncs::Divide(a, b) << endl;

try

{

cout << "a / 0 = " <<

MathFuncs::MyMathFuncs::Divide(a, 0) << endl;

}

catch (const invalid_argument &e)

{

cout << "Caught exception: " << e.what() << endl;

}

return 0;

}

6. Соберите исполняемый файл, выбрав команду Собрать решение в меню Сборка.

Запуск приложения

1. Убедитесь в том, что проект MyExecRefsDll выбран в качестве проекта по умолчанию. В Обозревателе решений выберите MyExecRefsDll и затем в меню Проект выберите Назначить запускаемым проектом.

2. Чтобы запустить проект, в строке меню выберите Отладка, Запуск без отладки. Результат выполнения должен выглядеть примерно следующим образом:

1. a + b = 106,4

2. a - b = -91,6

3. a * b = 732,6

4. a / b = 0,0747475

Перехвачено исключение: b не может быть равно нулю!

 

Контрольные вопросы

1.Какие способы создания динамических библиотек существуют?

2.Опишите процесс неявного связывания функций в динамической библиотеке.

3.Как осуществляется процесс экспорта, импорта функций в динамическую библиотеку при неявном связывании?

4.Опишите функции, которые используются при явном связывании функций в библиотеке (LoadLibrary, FreeLibrary, GetProcAddress).

5.Как создается.DLL файл для функции Asc2Un?

6.Как в вызывающей программе импортируется функция из динамической библиотеки?

7.Поясните работу программы преобразования файла из кодировки ASCII в кодировку Unicode.


 





Поделиться с друзьями:


Дата добавления: 2016-11-24; Мы поможем в написании ваших работ!; просмотров: 466 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Либо вы управляете вашим днем, либо день управляет вами. © Джим Рон
==> читать все изречения...

2302 - | 2033 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.