创建和使用动态库(C++)读书笔记
来源:互联网 发布:阿里云服务器好处 编辑:程序博客网 时间:2024/05/22 14:18
- 创建动态链接库DLL项目
- 向动态链接库添加类
- 添加MathFuncsDllh
- 添加MathFuncsDllcpp源文件
- 创建应用DLL的应用
- 在该应用中使用类库中的功能
- 添加引用
- 包含头文件
- 运行应用程序
- 参考目录
使用库是重复使用代码的一种方式,不用在创建的每个程序中重新实现相同的例程,一次性编写,然后从需要该功能的应用中引用它们。通过将代码置于DLL,可以节省引用它的每个应用中的空间,也可以更新该DLL而无需重新编译所有应用。
创建动态链接库(DLL)项目
向动态链接库添加类
创建应用DLL的应用
在该应用中使用类库中的功能
UML序列图和流程图
运行应用程序
创建动态链接库(DLL)项目
向动态链接库添加类
添加MathFuncsDll.h
// MathFuncsDll.h#ifdef MATHFUNCSDLL_EXPORTS#define MATHFUNCSDLL_API __declspec(dllexport) #else#define MATHFUNCSDLL_API __declspec(dllimport) #endifnamespace MathFuncs{ // This class is exported from the MathFuncsDll.dll class MyMathFuncs { public: // Returns a + b static MATHFUNCSDLL_API double Add(double a, double b); // Returns a - b static MATHFUNCSDLL_API double Subtract(double a, double b); // Returns a * b static MATHFUNCSDLL_API double Multiply(double a, double b); // Returns a / b // Throws const std::invalid_argument& if b is 0 static MATHFUNCSDLL_API double Divide(double a, double b); };}
在此代码中,当MATHFUNCSDLL_EXPORTS符号已经被定义时,成员函数声明部分的MATHFUNCSDLL_API符号将被设置为_declspec(dllexport)修饰符。词修饰符使函数能作为DLL导出,以供其他应用程序调用。如果未定义MATHFUNCSDLL_EXPORTS(例如,应用程序包含了头文件),则MATHFUNCSDLL_API将定义成员函数声明中的_declspec(dllimport)修饰符。此修饰符将优化在应用程序中导入该函数的操作。默认情况下,DLL的新建项目模板会将PROJECTNAME_EXPORTS添加到DLL项目的已定义符号中。在例子中,生成MathFuncsDll项目后将定义MATHFUNCSDLL_EXPORTS。
添加MathFuncsDll.cpp源文件
// MathFuncsDll.cpp : Defines the exported functions for the DLL application. //#include "MathFuncsDll.h"#include <stdexcept>using namespace std;namespace MathFuncs{ double MyMathFuncs::Add(double a, double b) { return a + b; } double MyMathFuncs::Subtract(double a, double b) { return a - b; } double MyMathFuncs::Multiply(double a, double b) { return a * b; } double MyMathFuncs::Divide(double a, double b) { if (b == 0) { throw invalid_argument("b cannot be zero!"); } return a / b; }}
创建应用DLL的应用
创建win32应用程序,并添加源码
// 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; } system("pause"); return 0;}
在该应用中使用类库中的功能
添加引用
包含头文件
运行应用程序
参考目录
演练:创建和使用动态链接库(C++)
-
0 0
- 创建和使用动态库(C++)读书笔记
- 创建和使用动态链接库 (C++)
- 创建和使用动态链接库 (C++)
- 创建和使用动态链接库 (C++)
- 创建和使用动态链接库 (C++)
- 创建和使用动态链接库 (C++)
- 创建和使用动态链接库 (C++)
- 创建和使用动态链接库 (C++)
- DLL:创建和使用动态链接库的步骤 (C++)
- 创建和使用动态链接库 (C++)C#调用
- 演练:创建和使用动态链接库 (C++)
- 演练:创建和使用动态链接库 (C++)
- 演练:创建和使用动态链接库 (C++)
- VS2010 动态库开发——第一章 演练:创建和使用动态链接库 (C++)
- 动态库学习 第1章——演练:创建和使用动态链接库 (C++)
- Linux下动态链接库的创建和使用及C调用matlab动态库问题
- VS2010 动态库开发演练:创建和使用动态链接库 (C++)(
- VS2010 动态库开发——第一章演练:创建和使用动态链接库 (C++)
- mysql索引与优化
- SQL SERVER实现远程数据库链接
- vbs教程《函数过程》
- android 支付宝登录无法返回
- find常用命令
- 创建和使用动态库(C++)读书笔记
- Linux上如何查看物理CPU个数,核数,线程数
- Docker Compose搭建mysql主从复制
- php设计模式之五__适配器模式
- 应用层打开驱动层创建的符号链接
- vsb教程《运行程序》
- 安装cuda8.0时无法安装.net Framework 4.0 错误的解决
- ssh远程控制
- VR平台开发笔记(四).net添加与删除文件夹