最近一个C项目需要调用一个C++的库,将调用过程简化一下写出来.
在c的代码main.c
调用duck.cpp
里的say()
方法, 代码如下:
duck.h
#ifndef _DUCK_H_
#define _DUCK_H_
class Duck{
public:
void say();
};
#endif
duck.cpp
#include "duck.h"
#include <iostream>
using namespace std;
void Duck::say(){
cout << "ga~ga~ga~" << endl;
}
animal.h
#ifndef _ANIMAL_H_
#define _ANIMAL_H_
#ifdef __cplusplus
#include "duck.h"
Duck duck;
extern "C" {
void duckSay();
}
#endif
#endif
animal.cpp
#include "animal.h"
#include "duck.h"
void duckSay(){
duck.say();
}
main.c
#include "animal.h"
void duckSay();
int main(void){
duckSay();
}
编译
g++ -shared -o libduck.so animal.cpp duck.cpp
gcc main.c ./libduck.so -o duck
./duck