开发环境:VS2017、WIN10。

1、vs2017动态库工程创建

        文件->新建->项目。新建项目页面中选择,Visual C++->Windows桌面,选择右侧的空工程,添加名称及位置,点击"确定",创建工程。

        解决方案平台选:Debug, x64。注意:发布时,选择Release模式。

        菜单栏上,项目->属性,进入属性页管理。配置属性->常规,配置类型改为"动态库(.dll)",点击应用、确定。完成工程配置。选择应用后,目标文件扩展名自动变为".dll"。

2、导出函数

        添加MyDLL.h头文件、MyDLL.cpp源文件。

MyDLL.cpp中:

#include "MyDLL.h" // 引用头文件

int add(int a, int b)
{
    return a + b;
}

MyDLL.h中:

#pragma once
#include <iostream>
using namespace std;

#define DLLEXPORT __declspec(dllexport)

extern "C" // C风格导出函数
{
    DLLEXPORT int add(int a, int b); // 导出函数前加宏DLLEXPORT
}

        编写完后,运行生成项目解决方案,即可在工程目录下生成对应的DLL及LIB。

3、动态库验证

        动态库工程本身无法运行。添加main.cpp,对动态库中导出函数进行调用验证。动态库工程中新建main.cpp。添加验证:

#include "MyDLL.h"
#include <iostream>
using namespace std;


int main() 
{	
    int sum = add(1, 2);
    cout<< "1 + 2 = " << sum << endl;
    return 0;
}

        项目->配置属性->常规中,配置输出类型为"应用程序(.exe)",确定。以应用程序的方式调用接口测试。

        运行,结果如下:

        PS:测试完后,要更新动态库时,需将配置类型改回"动态库(.dll)"。

4、动态库调用

        新建空工程"DLL1_CALL",添加main.cpp,在其中调用动态库。

main.cpp中内容如下:

#include "MyDLL.h"
#include <iostream>
using namespace std;


int main()
{
    int sum = add(1, 2);
    cout << "1 + 2 = " << sum << endl;
    return 0;
}

        接下来,执行下面步骤,实现动态库引用:

step1、拷贝动态库头文件MyDLL.h至当前工程,并在当前工程添加;

step2、属性页配置:

        1、调试->环境,配置环境变量(DLL1.dll 的搜索路径):

  PATH=E:\demo\DLL1\x64\Debug;$(PATH)

        2、vc++目录,配置包含目录(MyDLL.h 的搜索路径)和库目录(DLL1.lib 的搜索路径):

        头文件拷贝,则不需要配置包含目录;

        库目录,配置为:E:\demo\DLL1\x64\Debug。

        3、链接器->输入->附加依赖项,配置中添加:DLL1.lib。

最后,运行:

PS:简答的验证,可以使用denpends查看输出函数是否正确。

更多推荐