麻烦写个c++的在VS里
时间: 2024-01-30 09:03:25 浏览: 19
好的,以下是一个完整的例子,假设 `my_dll.dll` 文件中包含了 `add` 和 `subtract` 两个函数,用来分别计算两个整数的和与差:
首先,创建一个 `my_dll.h` 文件,定义 `add` 和 `subtract` 两个导出函数的原型:
```
#ifndef __MY_DLL_H__
#define __MY_DLL_H__
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllexport) int add(int a, int b);
__declspec(dllexport) int subtract(int a, int b);
#ifdef __cplusplus
}
#endif
#endif // __MY_DLL_H__
```
然后,创建一个 `my_dll.cpp` 文件,实现 `add` 和 `subtract` 函数:
```
#include "my_dll.h"
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
```
接下来,使用 Visual Studio 创建一个 DLL 项目,将 `my_dll.h` 和 `my_dll.cpp` 文件添加到该项目中,并编译生成 `my_dll.dll` 文件。
最后,可以创建一个 C++ 项目来调用 `my_dll.dll` 文件中的 `add` 和 `subtract` 函数:
```
#include <iostream>
#include <Windows.h>
typedef int(*AddFunc)(int, int);
typedef int(*SubtractFunc)(int, int);
int main() {
// 加载动态链接库
HINSTANCE my_dll = LoadLibrary(TEXT("my_dll.dll"));
// 获取函数句柄
AddFunc add = (AddFunc)GetProcAddress(my_dll, "add");
SubtractFunc subtract = (SubtractFunc)GetProcAddress(my_dll, "subtract");
// 调用函数
int result1 = add(1, 2);
int result2 = subtract(3, 4);
// 输出结果
std::cout << result1 << std::endl; // 3
std::cout << result2 << std::endl; // -1
// 释放动态链接库
FreeLibrary(my_dll);
return 0;
}
```
这段代码中,首先使用 `LoadLibrary` 函数加载 `my_dll.dll` 文件,然后使用 `GetProcAddress` 函数获取 `add` 和 `subtract` 函数的句柄。最后,直接调用句柄对象并传递必要的参数即可。
输出结果为:
```
3
-1
```