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


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

1. Создать и затем пункт Проект.

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

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

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

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

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

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

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

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

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

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

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

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

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

C++

// 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;

}

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

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

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

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

a + b = 106,4

a - b = -91,6

a * b = 732,6

a / b = 0,0747475

 

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

 



Дата добавления: 2017-01-26; просмотров: 1672;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

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

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.011 сек.