c 调用 c++ 函数
1. myMgr.cpp : 可以是一个普通的纯C++ 函数,
或者是在QT开发环境中的带有<QObject> 等头文件的C++类函数;
2. myMidProvider.h : 利用如下格式声明即将被C调用的函数;#ifdef __cplusplus
extern "C" {
#endif
int retrieveTopRatingApp(HitoApps_t **retList, int iNum, int* appCount);
#ifdef __cplusplus
}#endif
myMidProvider.cpp : 主要是接收C函数传过来的参数,
按照需求将调用retrieveTopRatingApp函数的返回值用C还原.
如返回的是一个类,则用C语言支持的结构体存放原本类中的数据,以供C函数调用;
3. 编辑 C++函数成.SO 文件,移动至 /usr/lib64/(lib)目录下,
myTest.c:包含“myMidProvider.h”头文件,即可调用定义在C++中的函数;
(若在qt等编辑器中,在SOURCES 包含myTest.c ,在HEADERS 包含myTest.h,执行c函数调用C++函数;)编译C++文件成.so
依赖 a.so 编译 b.so; g++ -shared -fPIC -o b.so b.cpp -la
同时编译: g++ -shared -fPIC -o b.so a.cpp b.cpp(移动至/usr/lib(lib64))
在终端下,编译C函数: gcc xxx.c -o test -lb
2. 在QT中,在.pro中, 将TEMPLATE = app 改成 TEMPLATE = lib;
编译命令: make distclean -> qmake-qt4 xxx.pro ->将生成的一系列的libxx.so 移至/usr/lib(lib64)中;
例子: AppCenterUtil.zip
C++调用C函数
只需要包含对应c的头文件即可;
如:
extern "C"
{
#include "a.h"
}
fmoonstar 更新至2013/05/17