最近需要在由纯c语言编写的代码中调用C++的动态库,在网上找了一些资料,现在总结下解决方法。
主要的思想就是将C++的动态库再封装一层,在这一层编写C语言的函数api,这API中使用C++动态库提供的类;
具体例子如下:
1,假如C++动态库包含如下代码:
//myclass.h
#ifndef _MYCLASS_H #define _MYCLASS_H class MyClass { public: void print(); }; #endif
//myclass.cc
#include <iostream> #include "myclass.h" using namespace std; void MyClass::print() { cout << "MyClass::print() called" << endl; }
编译链接生成动态库:libmyclass.so
g++ myclass.cc -shared -o libmyclass.so -I./ -fPIC
2,封装libmyclass.so中类的接口,生成libmyfunc.so
//myfunc.h