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);

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

在java中调用c/c++代码的方法(jni)

在java中调用c/c++可以通过jni实现。jni(java native interface)是java语言与其它语言进行交互的标准。java中实现调用c/c++代码进行混合编程的方式如下: ...

C/C++调用Java代码(属性和方法)

1. JNIEnv对象     对于本地函数 Java代码   JNIEXPORT void JNICALL Java_video1_TestNative_sayHello(JN...

C/C++调用Java代码(属性和方法)

转载:http://zzqrj.iteye.com/blog/12852621. JNIEnv对象 对于本地函数 JNIEXPORT void JNICALL Java_video1_TestNat...

在java中调用c/c++代码的方法(jni)

在java中调用c/c++可以通过jni实现。jni(java native interface)是java语言与其它语言进行交互的标准。java中实现调用c/c++代码的方式如下: 1、编写带nat...

【Android学习笔记】如何使用Eclipse在Android项目中调用C/C++代码,及遇到的错误解决方法

首先,我们创建一个工程,这里名叫“DemoJNI”,包名按照自己习惯改好,然后各种next最后finish。 为了条理清晰,我在主Activity之外创建了一个JniInterface类,专门作为J...

数值计算方法 数值积分(伪代码 c/c++ python)

数值计算方法 求解数值积分 使用梯形公式,中矩形公式和辛普森公式,并提供三个公式的复化求积法。

JIN学习一、Android使用已有C/C++代码、第三方SO库的方法

1.配置好NDk编译环境(这个Google一下,:)) 2.将已有C/C++代码,编译成SO文件 3.Eclipse中新建Android工程,创建一个jni目录。如下所示 4.在jni目...

CodeBlocks调试C&C++代码的方法

CodeBlocks调试C&C++代码的方法CodeBlocks 的好处很多,例如跨平台,小巧。如果你厌倦了Visual studio 的庞大,Eclipes的启动缓慢,那你不妨试试CB。好了闲话少说...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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