DLL的创建和使用(含代码)
转载至:http://blog.csdn.net/twtian01/article/details/38927187
初次接触DLL文件的使用,在网上找了许多教程自己学习,多谢网上的许多大神的帖子。现在将这些总结一下写出来也是对自己的一个提高
1.DLL创建方法
1. 打开VS2010,点击文件->新建->项目
2. 点击已安装模版->Visual C++->Win32项目,填写名称及解决方案名称
3. 点击下一步,应用程序选择DLL,附加选项选择空项目
4. 将生成一个空工程,在头文件添加新建项选择头文件(.h),输入名称testdll,源文件选择添加新建项选择C++文件(.CPP),输入名称testdll
5. 在testdll.h文件填写下面代码:
namespace MathFuncs
{
class MyMathFuncs
{
public:
__declspec(dllexport)double Add(doublea,double b);
__declspec(dllexport)double Subtract(doublea,double b);
__declspec(dllexport)double Multiply(doublea,double b);
__declspec(dllexport)double Divide(doublea,double b);
};
}
或者
namespace MathFuncs
{
class __declspec(dllexport) MyMathFuncs
{
public:
double Add(double a,double b);
double Subtract(doublea,double b);
double Multiply(doublea,double b);
double Divide(doublea,double b);
};
}
上述两种方式的区别在于第一种可以指定类中那些成员函数可以被其他程序调用,第二种方式类中所有成员函数都可以被其他程序调用
6. 在testdll.cpp文件里面添加如下代码:
// testdll.cpp
#include "testdll.h"
namespace MathFuncs
{
double MyMathFuncs::Add(doublea,double b)
{
return a + b;
}
double MyMathFuncs::Subtract(doublea,double b)
{
return a - b;
}
double MyMathFuncs::Multiply(doublea,double b)
{
return a * b;
}
double MyMathFuncs::Divide(doublea,double b)
{
return a / b;
}
}
7. 点击生成解决方案,转到工程目录下可以看到在Debug目录下有testdll.lib和testdll.dll两个文件,在其他项目里面我们要用到的油三个文件testdll.lib,testdll.dll和testdll.h
2.DLL使用
1. 新建一个空工程,添加源文件mian.cpp,在里面添加如下代码:
#include <stdio.h>
#include <Windows.h>
#include "testdll.h"
using namespace MathFuncs;
void main()
{
MyMathFuncsst;
double c=st.Add(3.0,5.0);
printf("%f\n",c);
system("pause");
}
或者
#include <stdio.h>
#include <Windows.h>
#include "testdll.h"
void main()
{
double c=MathFuncs::MyMathFuncs::Add(3.0,5.0);
printf("%d\n",c);
system("pause");
}
第二种方法需要在类的定义中使用静态函数
static __declspec(dllexport)doubleAdd(double a,doubleb);
否则需要实例化一个类的对象再调用类中函数
2. 将testdll.lib和testdll.h放到工程默认目录下,即CPP文件所在的目录,点击项目->属性->配置属性->链接器->输入->附加依赖相,填写testdll.lib,若把testdll.lib和testdll.h放到Debug目录下,则填写..\Debug\testdll.lib
3. 将testdll.dll放入cpp文件所在位置或者Debug目录下都可以,若把testdll.h文件放在其他地方则在头文件地方手动添加进来即可,或者点击项目->属性->配置属性->C/C++->常规->附加包含目录,添加头文件所在目录
注:若提示DLL文件读取错误而路径包含等都没有问题,则可以删除附加依赖项,在程序头加入#pragmacomment(lib , "testdll.lib")即可。
DLL的创建和使用(含代码)相关推荐
- 物流信息管理系统MySQL设计,物流管理系统的SQL数据库设计(含代码)
物流管理系统的SQL数据库设计(含代码) 物流管理信息系统的数据库设计班级xxx系统名称:物流管理信息系统一.需求分析物流管理系统是为制造商和零售商设计的管理系统数据库系统,目的是:1.实现上游制造商 ...
- 动图图解C语言插入排序算法,含代码分析
C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C ...
- 动图图解C语言选择排序算法,含代码分析
C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C ...
- 【转】win32 的DLL中创建windows窗口
转自:https://blog.51cto.com/wangyw/1071967 因工作需求,需要写一个DLL,并在其中创建windows窗口,网上有很多关于DLL创建窗口的文章,不过都是基于MFC的 ...
- OpenCV与图像处理学习十四——SIFT特征(含代码)
OpenCV与图像处理学习十四--SIFT特征(含代码) 一.SIFT算法 二.SIFT实现过程 三.代码实现 一.SIFT算法 SIFT, 即尺度不变特征变换算法(Scale-invariant f ...
- OpenCV与图像处理学习十一——分水岭算法(含代码)
OpenCV与图像处理学习十一--分水岭算法(含代码) 一.分水岭算法概要 二.分水岭算法步骤 三.代码应用 一.分水岭算法概要 任意的灰度图像可以被看做是地质学表面,高亮度的地方是山峰,低亮度的地方 ...
- OpenCV与图像处理学习九——连通区域分析算法(含代码)
OpenCV与图像处理学习九--连通区域分析算法(含代码) 一.连通区域概要 二.Two-Pass算法 三.代码实现 一.连通区域概要 连通区域(Connected Component)一般是指图像中 ...
- java订单类_使用Java创建一个订单类代码实例
这篇文章主要简介了使用Java创建一个订单类代码实例,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 需求描述 定义一个类,描述订单信息 订单id ...
- 【OpenCV实战】OpenCV实现人脸检测详解(含代码)
OpenCV中有许多可以进行人脸.人眼检测的特征文件,今天我们利用OpenCV中自带的特征文件haarcascade_frontalface_default.xml来进行人脸检测. [OpenCV实战 ...
- 【QMT】给QMT量化交易软件安装和调用第三方库(举例通达信pytdx,MyTT,含代码)
给QMT量化交易软件安装和调用第三方库(举例通达信pytdx,MyTT,含代码) 一.安装QMT 二.给QMT安装python 三.给QMT的python环境安装第三方库 1.准备python虚拟环境 ...
最新文章
- 【怎样写代码】工厂三兄弟之抽象工厂模式(二):解决方案
- python代码获取今天、昨天、明天的日期
- [unity3d]水果忍者-界面搭建
- GOOGLE突破图书馆入口IP限制之技巧
- LeetCode12- 整数转罗马数字
- Linux创建文件系统及设置分区卷标
- 7-42 学术会议地点统计问题-hebust (10 分)
- [蓝桥杯][算法提高VIP]金陵十三钗(状压dp记忆化搜索)
- 【2019年07月08日】A股最便宜的股票
- c++设置一个二维字符组初值_C语言 | 统计一段话中的字符
- oracle存在于A不存在于B,Oracle试题
- 很多创业者总是说融资难
- 发现一个HTML Form提交的小问题,不知道大家是不是都注意到了
- Android新增输入设备
- Response AddHeader使用实例
- 如何将PPT制成二维码?
- 奶酪巫师的黑客乐园 - 第一个进行硬分叉的区块链游戏?
- 副族元素从上到下原子半径_原子的大小以原子半径来表示
- 云服务器操作系统 版本选择,云服务器操作系统 版本选择
- mac m1 homebrew安装