实现 C调用 C++ 函数
2013-04-11 18:13
267 查看
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
1. 普通的纯C++函数,可在终端下利用 g++ -shared -fPIC -o a.so a.cpp 编译.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
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
1. 普通的纯C++函数,可在终端下利用 g++ -shared -fPIC -o a.so a.cpp 编译.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
相关文章推荐
- lua笔记 --- 一个C++调用lua函数的类的实现
- 【JNI开发】C++调用java函数的实现方法
- C++ 17转发一个函数调用的完美实现
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- Linux下c++调用自己编写的matlab函数:通过matlab引擎实现
- extern C(C++与C实现相互函数的调用)
- C++利用函数调用实现数组数据的输入输出
- [linux,c++] 使用指针函数实现多个函数调用
- (转)如何在linux C/C++语言中调用 sqlite 的函数接口来实现对数据库的管理
- CDHtmlDialog的基本使用(C++调用JS函数的实现)
- C++学习 【4.2】 利用函数实现指定的功能---函数的调用
- C++调用matlab函数实现微信自动跳一跳
- C++各类函数调用实现分析 .
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- C/C++混合编程,实现C/C++间的函数相互调用详解
- java JNI 实例 实现调用c++函数
- 如何在QT中实现C语言中调用C++的函数
- c++ 构造函数中调用虚函数的实现方法
- lua脚本语言的学习-----------------如何实现c++无参数的函数在lua中调用
- C++实例 静态成员的引入——静态数据成员的定义、调用,静态成员函数的实现、调用。