因项目中需要更新VAD算法,VAD使用C++实现的. 代码框架中需要使用C调用C++来实现对VAD的调用.
C++调用C很方便, 如果C调用C++,主要思想是将C++的动态库封装一层,这一层采用C语言实现,主要封装C++中的类
#ifndef TESTCLASS_H
#define TESTCLASS_H
#include<iostream>
#include<stdio.h>
class ValueClass
{
private:
int value;
int sum;
public:
ValueClass();
void Add(int i, int j);
};
#endif
#include "test_class.h"
ValueClass::ValueClass(){
printf("hello world \n");
}
void ValueClass::Add(int i, int j){
sum = i+j;
printf("sum : %d value : %d\n",sum,value);
}
#ifndef _TEST_WRAPPER_H
#define _TEST_WRAPPER_H
#ifdef __cplusplus
extern "C" {
#endif
void myValueClass(int a, int b);
#ifdef __cplusplus
}
#endif
#endif
#include "TestWrapper.h"
#include "test_class.h"
#ifdef __cplusplus
extern "C" {
#endif
void myValueClass(int a, int b){
ValueClass t;
t.Add(a,b);
}
#ifdef __cplusplus
};
#endif
#include "TestWrapper.h"
int main()
{
myValueClass(1,2);
}
该方法比较方便,也有其他方法实现,可以 如何用C语言封装 C++的类,在C里面使用