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

原创 2012年03月21日 10:38:29

有如下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);

}


c调用c++函数(包括类成员函数)的方法

声明:引用两处博客 http://blog.csdn.net/lg1259156776/ http://blog.csdn.net/caspiansea/article/details/9...
  • z1002137615
  • z1002137615
  • 2016年03月01日 17:24
  • 906

C++初学例程5---类的定义和类中方法的定义及调用

#include using namespace std; //类的声明 class Human//命名习惯 首字母大写 {  //类中方法的编写有两种方式  //1、直接定义  //2...
  • kokodudu
  • kokodudu
  • 2014年01月16日 16:10
  • 6655

C++中调用C代码,出现“Undefined Reference…”

问题现象:          最近Android开发中,在C++中调用C代码,出现“Undefined Reference…”问题。 问题分析:     “Undefined Reference…”提...
  • CDUT100
  • CDUT100
  • 2016年04月29日 16:10
  • 906

如何在C程序中使用C++类

最近有朋友问起,如何在c程序中调用c++的库,网上可以查到很多这方面的资料,我在这里把我的理解和方法说说。假如我们手上有一个c++的类//test1.hclass Test{    public:  ...
  • tq02h2a
  • tq02h2a
  • 2009年01月07日 22:16
  • 2260

如何有效解决C与C++的相互调用问题

    在实际工作中可能经常要进行C和C++的混合编程,C++调用C语言的代码通常都比较容易,但也有一些细节需要注意。C要调用C++的代码就略为麻烦一些,因为C不支持面向对象的特征。首先我们来看一下C...
  • gobitan
  • gobitan
  • 2007年03月18日 14:02
  • 15706

c调用c++的类函数

http://bbs.sjtu.edu.cn/bbscon?board=C&file=M.1300711242.A 在c++中定义了一个类,现在需要在c中调用这个类中的函数。add.h        ...
  • aiwoziji13
  • aiwoziji13
  • 2011年06月09日 18:33
  • 5001

JNI调用C++类的方式

本文讲解了在jni中调用c++对象的方式,并且给出了一个代码实例。
  • xiaohan2909
  • xiaohan2909
  • 2015年12月02日 21:42
  • 1547

C++调用python,直接调用模块内函数,调用类内函数

1,直接调用python模块内函数: //python初始化 Py_Initialize(); if (!Py_IsInitialized()) { printf("初始化失败!")...
  • NOHACKCCC
  • NOHACKCCC
  • 2013年08月05日 18:17
  • 1771

iOS 之 OBJECTC 调用C、OBJECTC调用C++

iOS 平台软件开发使用 OBJECTC 会经常使用 C 或 C++ 目的主要: 1. 复用之前成熟的代码  2. 复用开源项目代码 毕竟开源成熟的C/C++ 很多 3. 像STL非常方便开发的...
  • doitsjz
  • doitsjz
  • 2016年02月27日 00:53
  • 2602

c语言调用c++类成员函数的方法

c语言调用c++成员函数的方法
  • Kevin_Mr
  • Kevin_Mr
  • 2015年10月16日 18:03
  • 3433
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c代码调用c++类的方法
举报原因:
原因补充:

(最多只允许输入30个字)