请写一段c++的静态库,带有类成员变量和函数,用c语言调用这个库。
时间: 2024-10-10 10:07:08 浏览: 31
下面是一个简单的C++静态库示例,包含一个名为`MyClass`的类,它有成员变量`int value`和一个用于修改值的成员函数`incrementValue()`。同时,我们也提供了一个C语言的头文件`my_library.h`和一个C语言的接口`my_library.c`来调用这个C++库。
```cpp
// my_library.cpp (C++ 静态库)
#include <iostream>
class MyClass {
private:
int value;
public:
MyClass() : value(0) {}
void incrementValue() { value++; }
int getValue() const { return value; }
};
// my_library.h (C语言接口)
#ifndef MY_LIBRARY_H
#define MY_LIBRARY_H
extern "C" {
struct MyLibrary {
void (*incrementValue)(struct MyLibrary*);
int (*getValue)(struct MyLibrary*);
};
extern struct MyLibrary myLibInstance;
}
#endif // MY_LIBRARY_H
// my_library.c (C语言调用)
#include "my_library.h"
void c_increment_value(struct MyLibrary* lib) {
static_cast<MyClass*>(&lib->incrementValue)->incrementValue();
}
int c_get_value(const struct MyLibrary* lib) {
return static_cast<const MyClass*>(&lib->getValue)->getValue();
}
```
在这个例子中,C语言程序可以这样调用这个库:
```c
#include "my_library.h"
int main() {
c_increment_value(&myLibInstance);
printf("Current value: %d\n", c_get_value(&myLibInstance));
return 0;
}
```
阅读全文