如何封装C++接口成DLL,供C调用
时间: 2023-12-30 16:04:42 浏览: 38
可以按照以下步骤封装C++接口成DLL,供C调用:
1. 在C++接口中使用 `extern "C"` 声明,这样可以保证函数名不被C++编译器改变。
2. 在C++接口中将需要导出的函数声明为 `__declspec(dllexport)`,这样可以将函数导出到DLL中。
3. 编译生成DLL文件。
4. 在C语言中使用 `LoadLibrary` 函数加载DLL文件,使用 `GetProcAddress` 函数获取DLL中导出的函数地址,然后调用该函数即可。
以下是一个示例代码:
C++接口代码:
```c++
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllexport) int add(int a, int b);
#ifdef __cplusplus
}
#endif
int add(int a, int b) {
return a + b;
}
```
C语言调用代码:
```c
#include <stdio.h>
#include <windows.h>
int main() {
HMODULE hModule = LoadLibrary(TEXT("MyDll.dll"));
if (hModule) {
typedef int (*AddFunc)(int, int);
AddFunc add = (AddFunc)GetProcAddress(hModule, "add");
if (add) {
int result = add(1, 2);
printf("Result: %d\n", result);
}
FreeLibrary(hModule);
}
return 0;
}
```