visual studio 创建的“动态链接库(.dll)”工程,直接在原工程中测试DLL接口的方法

1. DLL工程创建

我们在封装dll接口的时候,在vs创建工程时选的应用程序类型选的是“DLL”,在附加项中选择“空项目”(也可不选,让vs给自动定义一些.h和.cpp),此时即可创建一个空的工程,没有任何.h和.cpp。此时查看项目的“配置属性--C/C++--预处理器--预处理器定义”,可发现vs已帮我们默认定义以下宏,如图所示

WIN32

_DEBUG
_WINDOWS
_USRDLL

****_EXPORTS(即:工程名称_EXPORTS)


**dll.h头文件的自己定义,在头文件中添加以下代码:

#pragma  once
// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 ABSTRACTVIDEODATAAPPLICATIONDLL_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// ABSTRACTVIDEODATAAPPLICATIONDLL_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#ifdef  ***_EXPORTS       //***是工程名称的大写
#define ***_API extern "C" __declspec(dllexport) //***是工程名称的大写 该语句的含义是:用宏***_API 来表示 extern "C" __declspec(dllexport),表示函数是输出函数
#else
#define ***_API extern "C" __declspec(dllimport) //***是工程名称的大写
#endif
然后就可定义接口函数

***_API int FunctionName(int x,int y);

2. dll工程修改为“应用程序类型”,测试接口

按照以下步骤修改工程属性:

(1) 配置属性--常规--配置类型:原来是“动态库(.dll)”  改为“应用程序(.exe)”  
(2)配置属性--连接器--系统--子系统:原来是“窗口 (/SUBSYSTEM:WINDOWS)”  改为“控制台/SUBSYSTEM:CONSOLE)”

在工程中添加”main.cpp“

#include "**dll.h"

int main()
{
   //接口函数调用代码

   return 0;

}

在测试的时候,如果发现问题可以直接修改**dll.h和**dll.cpp中的问题并测试,当测试没有问题时,然后再把刚刚修改过的属性还原回来,就能生产dll和lib了,向其他调用系统提供了。

猜你喜欢

转载自blog.csdn.net/wangyjfrecky/article/details/80353587