DLL编写和调用教程

DLL编写和调用教程
DLL编写和调用教程

DLL编写和调用教程(附详细工程截图)

在学习中记录与分享

2015年5月15日星期五

1.新建一个Dll工程,工程名MyDll 步骤Win程序-> DLL -> 完成

会自动生成一个MyDll.cpp、dllmain.cpp、stdafx.cpp、targetver.h、stdafx.h共个文件在创建Dll工程中,勾选导出符号,会自动添加MyDll.h

2.新建一个MyDll.h,在里面写入代码

#ifndef MyDll_H_

#define MyDll_H_

//方法一

extern "C"

{

_declspec(dllexport) int Add(int one, int two);

_declspec(dllexport) int Mul(int one, int two);

//其它函数方法,安装上面的个写在下面

};

/* 方法二使用宏定义

#ifdef MYLIBDLL

#define MYLIBDLL extern "C" _declspec(dllimport)

#else

#define MYLIBDLL extern "C" _declspec(dllexport)

#endif

//这里就定义了一个函数add

MYLIBDLL int Add(int one, int two);

MYLIBDLL int Mul(int one, int two);

*/

#endif

这里还有非常关键的一步,就在MyDll.cpp中添加头文件

#include "MyDll.h"//这一句别忘记了,否则后面调用函数编译不了

3.在MyDll.cpp中写入每一个函数的实现方法

int Add(int a,int b)

{

return a+b;

}

///////////

int Mul(int a,int b)

{

return a*b;

}

4.生成dll和lib文件

()生成Dll文件,DLL右键解决方案,生成解决方案,便会自动生成MyDll.dll。

()那如何生成lib文件呢?

也是右键解决方案,添加-> 新建项,选择m模块定义文件(.def)

在编译一次就生成了lib文件,还有MyDll.dll文件

()取消lib文件的生成

在解决方案的属性中->配置属性->链接器->输入->模块定义文件MyDll.def

删除MyDll.def在重新编译就可以了。

这里需要lib文件,不选择删除操作

5.新建调用工程,调整依赖关系、启动项

右键MyDll解决方案->添加->新建项目这里选择常见默认的Win32控制台应用程序右键调用Dll函数->项目依赖项->勾选MyDll,在右键设置为启动项目

6.调用dll的内部函数

写入以下代码

// 调用Dll函数.cpp : 定义控制台应用程序的入口点。

#pragma comment (lib,"MyDll.lib")

#include "stdafx.h"

#include

#include

using namespace std;

//这部分内容必须填写,否则提示error C3861: “Add”: 找不到标识符

extern "C"

{

_declspec(dllimport) int Add(int a,int b);

_declspec(dllimport) int Mul(int a,int b);

};//这里有没有;,不报错

int _tmain(int argc, _TCHAR* argv[])

{

int a = 20;

int b = 30;

cout<<"a+b="<

cout<<"a*b="<

getchar();

return 0;

}

7.编译,运行,ok

附件:截图保存操作过程从新建工程开始

工程截图:

手动添加MyDll.h

新建工程调用Dll函数

设置工程调用Dll函数的依赖项目为MyDll

将调用Dll函数设置为启动项目

操作完成后的解决方案

写入调用代码

编译,运行

生成的文件如下图

运行结果

关闭程序后显示

相关主题
相关文档
最新文档