文章目录
测试代码
在C语言中调用C++类,需要遵循几个步骤:
在C++代码中,确保C++类的函数是extern “C”,这样可以防止名称修饰(name mangling)。
使用头文件声明C++类的公共接口,并且为这个头文件提供C语言兼容的接口。
编译C++代码为对象文件或库。
在C语言代码中包含这个头文件,并且链接C++库或对象文件。
c++ MyClass.h
#ifdef __cplusplus
extern "C" {
#endif
class MyClass {
public:
MyClass();
void doSomething();
};
#ifdef __cplusplus
}
#endif
MyClass.cpp
#include "MyClass.h"
#include <iostream>
MyClass::MyClass() {
// 构造函数实现
}
void MyClass::doSomething() {
// 方法实现
std::cout << "Doing something in C++ class" << std::endl;
}
C调用代码
#include "MyClass.h"
int main() {
// 创建C++类的实例
MyClass myObj;
// 调用C++类的方法
myObj.doSomething();
return 0;
}
编译
g++ -c MyClass.cpp -o MyClass.o
gcc -c main.c -o main.o
g++ -shared -o libMyClass.so MyClass.o
gcc main.o -L. -lMyClass -o main