下面我将详细讲解如何使用VS2019开发简单的C/C++动态链接库并进行调用的完整攻略,包含以下步骤:
步骤一:创建动态链接库项目
- 打开Visual Studio 2019,选择
创建新项目
。 - 在
新建项目
弹出框中,选择Windows桌面向导
面板,选择动态链接库 (.dll)
项目类型。 - 为项目命名并选择保存位置,点击
创建
。
步骤二:编写动态链接库代码
- 在项目中添加您想要的源代码文件。
- 在项目文件夹
(例如," Source Files "和 " Header Files ")
中添加所有必要的源代码文件和头文件。 - 开始构建动态链接库:在 VS2019 中,您可以在
“生成”窗口中设置
。
#include "pch.h"
#include "MyDll.h"
#include <stdio.h>
//定义输出函数的实现
void myPrint(void)
{
printf("Hello world from MyDll!\n");
}
步骤三:构建动态链接库
- 单击项目软件架构下的 “生成解决方案”。
- 确认构建过程中无错误。
- 如有错误或警告,应逐个解决这些问题。
- 最终将编译并构建了新的动态链接库(DLL)文件。
步骤四:创建具有调用DLL能力的项目
此时我们需要创建一个具有调动态链接库能力的项目,然后在这个项目中调用之前编译好的 DLL 文件。
- 打开 Visual Studio 2019,选择 “创建新项目”。
- 在新建项目弹出框中,选择 “Windows 应用程序” 面板,并选择 “空项目” 项目类型。
- 为项目命名并选择保存位置,点击 “创建”。
- 在项目中右键单击 “添加” -> “新建项”。
- 在 “新建项” 弹出框中,选择 “C++ 文件” 项目类型,命名为 main.cpp。
- 添加以下示例代码片段:
#include "pch.h"
#include "windows.h"
#include <iostream>
using namespace std;
//定义动态链接库常量
typedef void (*FnMyPrint)();
int main()
{
//加载动态链接库
HINSTANCE hDll = LoadLibrary(TEXT("MyDll.dll"));
if (hDll == NULL)
{
cout << "动态链接库加载失败!" << endl;
return -1;
}
//获取DLL函数指针
FnMyPrint myPrint = reinterpret_cast<FnMyPrint>(GetProcAddress(hDll, "myPrint"));
if (myPrint == NULL)
{
cout << "动态链接库函数获取失败!" << endl;
return -1;
}
//调用DLL函数
myPrint();
return 0;
}
步骤五:构建并运行项目
- 单击项目软件架构下的 “生成解决方案”。
- 确认构建过程中无错误。
- 如有错误或警告,应逐个解决这些问题。
- 最终在输出窗口可以看到“生成成功”,则可以运行项目并查看DLL的输出结果。
以上就是使用VS2019开发简单的C/C++动态链接库并进行调用的完整攻略,通过以上步骤您可以顺利创建和调用动态链接库,这里附上一个头文件和示例代码,以供参考。
头文件:
#include "pch.h"
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif
extern "C" MYDLL_API void myPrint(void);
示例代码:
#include "pch.h"
#include "windows.h"
#include <iostream>
#include "MyDll.h"
using namespace std;
//定义动态链接库常量
typedef void (*FnMyPrint)();
int main()
{
//加载动态链接库
HINSTANCE hDll = LoadLibrary(TEXT("MyDll.dll"));
if (hDll == NULL)
{
cout << "动态链接库加载失败!" << endl;
return -1;
}
//获取DLL函数指针
FnMyPrint myPrint = reinterpret_cast<FnMyPrint>(GetProcAddress(hDll, "myPrint"));
if (myPrint == NULL)
{
cout << "动态链接库函数获取失败!" << endl;
return -1;
}
//调用DLL函数
myPrint();
return 0;
}
希望对您有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:VS2019开发简单的C/C++动态链接库并进行调用的实现 - Python技术站