1.前言
关于这个问题网上有很多答案,主要分为静态调用和动态调用两种方法,我这里主要讲的是一般在实际开发中调用dll动态库的方法。在日常开发中,实际上只要配置好项目属性,程序运行时系统会自动加载项目所引用的dll文件,程序员是无需关心如何加载的。
2.属性配置
在VS中创建好C++项目后,右键项目名称选择属性进入属性页进行如下配置:
- 第一步:C/C++ - 常规 - 附加包含目录 :这里增加需要包含的外部头文件路径
- 第二步:链接器 - 常规 - 附加库目录:这里增加引用的静态库路径
- 第三步:链接器 - 输入 - 附加依赖项:这里增加隐隐的静态库名称
- 第四步:引用的动态库路径:
第一种: 直接将dll文件拷贝到exe所在目录下
第二种: 配置属性->调试->环境:输入path=包含dll文件的文件夹路径
第三种: 配置属性->调试->工作目录:包含dll文件的文件夹路径
3.具体操作
3.1 打开VS
这里我用的是VS2022
3.2 创建动态库
step1:点击创建新项目;
step2:输入C++,下面选择动态链接库dll,点击下一步;
step3:输入项目名称,选择项目位置,第3步打钩则解决方案.sln和项目文件.vcxproj在同一目录下,否则.sln在下一级目录,这个自己试一下就知道了,最后点创建;
step4:在项目上写入需要调用的函数
1> 添加头文件
右键头文件增加.h文件,点击添加->新建项,输入头文件名称,点击添加,并添加如下代码:
2> 添加cpp文件
同理右键源文件增加.cpp文件,点击添加->新建项,输入源文件名称,点击添加,并添加如下代码:
3> 右键项目重新生成动态库文件
3.3 创建主项目
step1:点击左上角文件创建新项目,选择空项目,点击下一步;
step2:输入项目名称,选择位置,点创建;
3.4 主项目属性配置
1> 配置项目依赖的头文件路径
第一步:右键项目找到属性,弹出如下属性页,找到编辑入口;
第二步:双击第一行,此时是空的,点右边三点按钮,弹出选择文件夹对话框,选择myfunction.h所在目录,点击确定;
2> 配置项目依赖的静态库目录
第一步:项目属性页,如下找到编辑入口;
第二步:双击第一行,此时是空的,点右边三点按钮,弹出选择文件夹对话框,选择dllUsedToReference.lib所在目录,点击确定;
3> 配置项目依赖的静态库
第一步:找到编辑入口;
第二步:点击第一行,此时是空的,输入静态库名称,点击确定;
第三步:回到属性配置主界面,应用、确认
4> 配置项目依赖的动态库路径
这一步至关重要!!!,通常有以下三种方法:
第一种:直接将项目依赖的动态库dll文件拷贝到可执行文件exe所在目录下:
第二种:配置属性->调试->环境:输入path=包含dll文件的文件夹路径
右键主项目找到属性,弹出属性页,按照如下步骤找到编辑点击进入;
在第一行输入依赖动态库的路径,注意没有空格!!!
第三种方法: 配置属性->调试->工作目录:包含dll文件的文件夹路径
3.5 主项目测试代码
1> 添加头文件
2> 添加cpp文件
3.6 主项目生成调试
1> 生成代码
右键项目名称重新生成可执行程序,生成如下文件:
2> 调试代码
点击本地调试或F5启动调试,提前打好断点逐步调试,就能看到断点会进入引用dll函数中: