关闭

c代码调用c++类的方法

标签: c++cdelete
1391人阅读 评论(0) 收藏 举报
分类:

有如下c++ so库,我们只看得到它的头文件

cpplib.h:

#ifndef CPP_LIB_H

#define CPP_LIB_H

class MyClass

{

public:

MyClass();

~MyClass();

void func();

}

#endif


我们需要在main.c中创建这个类并调用它的func方法,怎么办?

加个adapter就可以了,需要实现cadapter.h和cadapter如下:

cadapter.h:

#ifndef CADAPTER_H

#define CADAPTER_H


extern "c"{

typedef void* MYHANDLE;


MYHANDLE myclass_new();

void myclass_del(MYHANDLE handle);

void myclass_func(MYHANDLE handle);

#endif

};


cadapter.cpp:

#include "cpplib.h"

#include "cadapter.h"


MYHANDLE myclass_new();

{

return new MyClass;

}

void myclass_del(MYHANDLE handle)

{

delete ((MyClass*)handle);

}

void myclass_func(MYHANDLE handle)

{

((MyClass*)handle)->func();

}


做好上面的adapter以后, 我们就可以在main.c里这样调用:

#include "cadapter.h"

void test()

{

MYHANDLE handle = myclass_new();

myclass_func(handle);

myclass_del(handle);

}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:88952次
    • 积分:1211
    • 等级:
    • 排名:千里之外
    • 原创:26篇
    • 转载:2篇
    • 译文:0篇
    • 评论:63条
    文章分类
    最新评论