Vs2022 创建 C++ Dll 实现加减方法,并创建C++控制台程序引用dll调用的具体步骤
时间: 2023-12-10 07:03:46 浏览: 55
创建C++ DLL实现加减方法,并创建C++控制台程序引用DLL调用的具体步骤如下:
1. 打开Visual Studio 2022,选择“创建新项目”。
2. 选择“Visual C++”类别,然后选择“Win32控制台应用程序”模板。
3. 输入项目名称和位置,点击“创建”。
4. 在“应用程序向导”中,选择“DLL”项目类型。
5. 选择“空项目”选项,并取消勾选“预编译头”选项。
6. 点击“完成”按钮创建项目。
7. 在“解决方案资源管理器”中,右键单击项目名称,选择“添加”>“新建项”。
8. 选择“C++文件(.cpp)”模板,输入文件名称(例如:MyMath.cpp),点击“添加”按钮。
9. 在MyMath.cpp中,实现两个函数Add和Subtract,如下所示:
```c++
extern "C" __declspec(dllexport) int Add(int a, int b)
{
return a + b;
}
extern "C" __declspec(dllexport) int Subtract(int a, int b)
{
return a - b;
}
```
10. 在“解决方案资源管理器”中,右键单击项目名称,选择“属性”。
11. 在左侧窗格中,选择“配置属性”>“常规”。
12. 在右侧窗格中,将“目标扩展名”设置为“.dll”。
13. 在左侧窗格中,选择“配置属性”>“C/C++”>“常规”。
14. 在右侧窗格中,将“预编译头”设置为“不使用预编译头”。
15. 在左侧窗格中,选择“配置属性”>“链接器”>“常规”。
16. 在右侧窗格中,将“输出文件”设置为“$(ProjectDir)$(Configuration)\$(TargetName)$(TargetExt)”。
17. 单击“确定”按钮保存更改。
18. 生成DLL项目。
现在,我们创建一个新的C++控制台应用程序,引用上面创建的DLL,调用Add和Subtract函数。
1. 打开Visual Studio 2022,选择“创建新项目”。
2. 选择“Visual C++”类别,然后选择“Win32控制台应用程序”模板。
3. 输入项目名称和位置,点击“创建”。
4. 在“应用程序向导”中,选择“空项目”选项,并取消勾选“预编译头”选项。
5. 点击“完成”按钮创建项目。
6. 在“解决方案资源管理器”中,右键单击项目名称,选择“属性”。
7. 在左侧窗格中,选择“配置属性”>“常规”。
8. 在右侧窗格中,将“字符集”设置为“使用多字节字符集”。
9. 在左侧窗格中,选择“配置属性”>“VC++目录”。
10. 在右侧窗格中,选择“包含目录”属性,单击“编辑”。
11. 添加DLL头文件路径,例如:C:\mylib\include。
12. 选择“库目录”属性,单击“编辑”。
13. 添加DLL库文件路径,例如:C:\mylib\lib。
14. 在左侧窗格中,选择“配置属性”>“链接器”>“输入”。
15. 在右侧窗格中,选择“附加依赖项”属性,单击“编辑”。
16. 添加DLL库文件名称,例如:mylib.lib。
17. 单击“确定”按钮保存更改。
18. 在项目中,使用以下代码来调用DLL中的函数:
```c++
#include <Windows.h>
#include <iostream>
typedef int (*AddFunc)(int, int);
typedef int (*SubtractFunc)(int, int);
int main()
{
// 加载DLL
HINSTANCE hDll = LoadLibrary("mylib.dll");
if (hDll == NULL)
{
std::cout << "Failed to load DLL." << std::endl;
return 1;
}
// 获取DLL函数地址
AddFunc addFunc = (AddFunc)GetProcAddress(hDll, "Add");
SubtractFunc subtractFunc = (SubtractFunc)GetProcAddress(hDll, "Subtract");
if (addFunc == NULL || subtractFunc == NULL)
{
std::cout << "Failed to get function address." << std::endl;
FreeLibrary(hDll);
return 1;
}
// 调用DLL中的函数
int result1 = addFunc(10, 20);
int result2 = subtractFunc(30, 10);
std::cout << "Add result: " << result1 << std::endl;
std::cout << "Subtract result: " << result2 << std::endl;
// 卸载DLL
FreeLibrary(hDll);
return 0;
}
```
19. 生成控制台应用程序项目。
20. 运行控制台应用程序,可以看到输出结果,Add函数的结果为30,Subtract函数的结果为20。