C++做成动态函数库
时间: 2024-09-24 08:26:22 浏览: 14
在C++中,将程序制作成动态链接库(Dynamic Link Library, DLL),也称为共享库或DLL文件,主要是为了模块化编程和资源复用。以下是创建动态函数库的一般步骤:
1. **声明**:首先,在头文件中声明公开的类、函数或变量,通常使用`extern "C"`关键字以便于其他语言调用。
```cpp
// dllheader.h
extern "C" {
void MyFunction(int param);
class MyClass;
}
```
2. **实现**:在源文件中实现相应的功能,并定义为`__declspec(dllexport)`,这是告诉编译器这个函数应该导出到DLL。
```cpp
// dllimplementation.cpp
#include "dllheader.h"
__declspec(dllexport) void MyFunction(int param) { ... }
MyClass* CreateMyClass() { ... return new MyClass(); }
```
3. **编译库**:使用`cl /LD`(Windows)或`g++ -shared`(Linux、macOS)等命令编译生成DLL文件。
4. **编译客户端**:在需要使用该DLL的客户端代码中,使用`__declspec(dllimport)`导入函数和类,如`void MyFunction(int); MyClass* CreateMyClass()`。
```cpp
// clientcode.cpp
#include "dllheader.h"
extern "C" {
void MyFunction(int param);
MyClass* CreateMyClass();
}
int main() {
MyFunction(42);
MyClass* obj = CreateMyClass();
...
}
```
5. **运行**:编译后的客户端程序会自动查找并加载指定的DLL,通过`GetProcAddress`等API访问DLL中的函数。