C++如何创建DLL文件并调用

当我们需要将开发的程序给别人用,但是有不希望将我们的程序实现展示给别人时,可以采用DLL(动态链接库)方式分享。

1、创建DLL文件

创建的DLL文件包括三个文件(.h/.dll/.lib),
1.1 打开VS新建一个项目。

1.2 选择DLL,附加选项选择空项目

1.3 在头文件和源文件下分别添加如下文件

1.4 在头文件CaculatorDLL.h中添加如下代码(具体可以自己定义代码),最上面的宏定义判断何时用外部接口,何时用内部接口,实在不理解的照着用就好了。哈哈!

#ifdef PORT_STYLE
#else
#define PORT_STYLE _declspec(dllimport)//当编译时,头文件不参加编译,所以.cpp文件中先定义,后头文件被包含进来,因此外部使用时,为dllexport,而在内部编译时,则为dllimport
#endif//绝对值加法
double PORT_STYLE AbsAdd(double add1, double add2);//Caculator类
class PORT_STYLE Caculator
{public://创建一个Cacualtor对象Caculator();//创建一个Cacualtor对象Caculator(double x, double y);//析构Cacualtor对象~Caculator();//加法double Add(double x, double y);//减法double Sub(double x, double y);//乘法double Mult(double x, double y);//除法double Divi(double x, double y);private:double num1;double num2;
};

1.5 在源文件CaculatorDLL.cpp中添加如下代码

#define PORT_STYLE _declspec(dllexport)#include"CaculatorDLL.h"double PORT_STYLE AbsAdd(double add1, double add2)
{return add1 + add2;
}Caculator::Caculator()
{}Caculator::Caculator(double x, double y)
{num1 = x;num2 = y;
}Caculator::~Caculator()
{}double Caculator::Add(double x, double y)
{return x + y;
}double Caculator::Sub(double x, double y)
{return x - y;
}double Caculator::Mult(double x, double y)
{return x*y;
}double Caculator::Divi(double x, double y)
{return x / y;
}

1.6 按照下图生成文件

1.7 在项目的Debug文件中生成如下文件

2、创建测试项目

2.1 打开VS创建一个新项目



2.2 生成一下项目,然后在项目所在文件夹内创建一个include文件夹,将1.7中CaculatorDLL.dll和CaculatorDLL.lib以及CaculatorDLL.h放入include文件夹内。


2.3 在将CaculatorDLL.dll文件放到TestDLL项目的Debug文件夹中。

2.4 配置环境,打开TestDLL项目的属性。
2.4.1 配置包含路径


2.4.2 配置库目录

2.4.3 配置附加依赖项


2.5 在TestDLL.cpp中添加如下代码

// TestDLL.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include"include\CaculatorDLL.h"#include<iostream>using namespace std;int main()
{Caculator myCaculator;cout << AbsAdd(-1.23, 3.12) << endl;cout << myCaculator.Add(1.2, 2.1) << endl;cout << myCaculator.Sub(1.2, 2.1) << endl;cout << myCaculator.Mult(1.2, 2.1) << endl;cout << myCaculator.Divi(1.2, 2.1) << endl;getchar();return 0;
}

2.6 按F5得到如下结果,完毕!

C++生成DLL文件并使用相关推荐

  1. linux 生成dll文件,Linux和Windows平台 动态库.so和.dll文件的生成

    Linux动态库的生成 1. 纯cpp文件打包动态库 将所有cpp文件和所需要的头文件放在同一文件夹,然后执行下面命令 gcc -shared - fpic *.c -o xxx.so: g++ -s ...

  2. vs2012中程序集生成无法自动在网站Bin目录下生成Dll文件?(已解决!)

    最近,突然发现生成程序集后,网站bin目录下dll没有更新,也没有自动生成dll文件,通过近半个小时的摸索和实验,找到了解决方法: 1.右键网站,不是项目,选择[属性页],在左侧[引用]中如果没有,就 ...

  3. VS2008生成DLL文件的方法、引用dll文件以及意义

    一 VS2008生成dll文件的方法     有两种方法:     1:傻瓜式操作     打开VS2008,依次点击:菜单->文件->新建项目->项目类型visual C#(这里假 ...

  4. c++生成DLL文件(visual studio 2019)面向小白萌新

    c++生成DLL文件(visual studio 2019)面向小白萌新 目录 c++生成DLL文件(visual studio 2019)面向小白萌新 前言 如何生成 1.创建dll项目 2.更改我 ...

  5. vs2019生成dll文件及(C#)使用

    vs2019 生成dll文件及使用 一.c++生成dll文件 32位Dll生成 64位dll生成 注意 c#程序dll使用 一.c++生成dll文件 32位Dll生成 打开vs2019,建立c++的d ...

  6. C++ dll库只生成dll文件,而未生成lib文件的问题

    C++ dll库只生成dll文件,而未生成lib文件的问题 逐项检查 逐项检查 新建项目时,选择应用程序类型为dll,并勾选"Export Symbols": 属性->链接器 ...

  7. [MATLAB]将.m文件生成dll文件

    环境:VS2017+MATLAB R2017a ①配置编译环境 在命令行窗口中输入"mbuild -setup"(横线前有一个空格),如果出现如下图所示的提示信息即为成功. 如果提 ...

  8. 【DLL】clion生成.dll文件、python调用.dll文件

    最近为了生成以及调用.dll文件,踩了一些雷,记录如下 目录 1.clion中生成.dll 2.clion中测试生成的.dll文件 3.在python中调用.dll文件 [1]导入.dll [2]ct ...

  9. ILRuntime(二)整合Hotfix到Unity中,脚本生成dll文件

    如果开发的时候按之前的一个Hotfix工程,一个Unity工程,开发会很麻烦.因此我们可以把Hotfix部分的代码放入到Unity当中,并增加一个标记,到时候把这些代码整合成一个dll文件即可. 具体 ...

  10. 【VS实践】VS解决方案中出现无法生成DLL文件

    前言: 这几天在学习牛腩新闻发布系统,突然发现标准的过程原来是从D层倒着往U层敲,在敲的过程中,遇到了一个问题:D层生成的DLL文件,在B层和U层中使用不了! 从早上10:00~15:30,自己弄了好 ...

最新文章

  1. PHP问题 —— PHP Parse error: syntax error, unexpected
  2. codevs——1958 刺激
  3. java 抽象接口类,Java接口(interface)和Java抽象类(abstract class)的区别(详诉版)
  4. 关于html:form/html:form特性
  5. 根据经纬度求最近点的三种解法java实现
  6. curl 伪装来路(referer)
  7. ProxmoxVE(V5.2) 之 使用外部ceph存储(luminous)
  8. Nginx代理介绍、安装及配置详解
  9. 程序局部性(时间局部性与空间局部性)与循环展开原理详解
  10. nginx 集群部署
  11. Google Guice简介
  12. summernote富文本编辑器基本使用
  13. jquery判断元素内容是否为空的方法
  14. 计算机应用线型类型为虚线方点,cad怎样把线变成虚线或者点划线
  15. 华为畅享20 pro 和华为畅享Z 的区别 哪个好
  16. zabbix部署+grafana7.2采集数据(时下新版)
  17. 复杂网络分析 08网络节点重要性
  18. SpringMVC Controller中常用到的一些注解
  19. 【Tool】项目管理:工作组规划器 Microsoft Project
  20. adb 输入回车命令_Android超级终端(Adb Shell)常用命令、命令大全-持续更新 | 何连超的博客小站...

热门文章

  1. js连接mysql数据库
  2. TestStand-从LabVIEW创建TestStand数据类型的簇
  3. TestStand版本切换注意事项(重启电脑)
  4. 汉字为什么能流传至今_《汉字为什么是方块字(节选)》阅读附答案
  5. 作业三-读书app原型设计
  6. 小型温控系统c语言程序,温度控制的PID算法的C语言程序
  7. 数据库基本语句(SQL)
  8. 国标GB28181协议紫光华智云平台级联国标GB28181协议视频平台EasyGBS注意事项
  9. 从autotool迁移到cmake
  10. 渗透测试的种类(黑白盒)、脆弱性评估、OWASP Top 10、PTES-渗透测试执行标准