千家信息网

C调用C++代码的方法是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"C调用C++代码的方法是什么",在日常操作中,相信很多人在C调用C++代码的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C调用C++代码的
千家信息网最后更新 2026年11月01日C调用C++代码的方法是什么

这篇文章主要介绍"C调用C++代码的方法是什么",在日常操作中,相信很多人在C调用C++代码的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C调用C++代码的方法是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

有时C程序里需要用到C++的类,但是C语言又不能直接调用类,这时需要把C++的类使用C接口封装后,再调用,

可以将封装后的C++代码编译成库文件,供C语言调用;

需要注意的是,封装的C++代码库文件是用g++编译的,所以在C中调用时,需要添加extern "C"{}关键字。

编译c代码时,要加上-lstdc++

如下代码,是c代码使用C++的map容器的例子:

//test.cpp 封装C++代码#include #include #include "test.h"using namespace std;static map m_testMap;void pushVal(int key, int val){ m_testMap[key] = val;}int getVal(int key){ map::iterator iter = m_testMap.find(key); if (iter != m_testMap.end() ) {  return iter->second; } return  -1;}//头文件 test.h#ifndef _TEST_H_#define _TEST_H_#ifdef __cplusplusextern "C" {#endifvoid pushVal(int key, int val);int getVal(int key );#ifdef __cplusplus}#endif#endif

main函数,调用封装的C++接口:

//main.c#include #include "test.h"int main(){ printf("test\n"); for (int i = 0; i < 10; i++) {  printf("push key: %d, val: %d\n", i, i*10);  pushVal(i, i*10); }  int val = 0; for (int i = 0; i < 10; i++) {  val = getVal(i);  printf("get key: %d, val: %d\n", i,val); } return 0;}

编译的时候,为了简单,我这里没有编译成库文件,直接用引用.o编译的:

makefile:

all:  g++ -Wall -c  test.cpp -o test.o gcc -Wall -c  main.c -o main.o gcc -Wall test.o main.o -o test -lstdc++clean: rm test *.o

编译运行结果如下:

makeg++ -Wall -c  test.cpp -o test.ogcc -Wall -c  main.c -o main.ogcc -Wall test.o main.o -o test -lstdc++

运行:

./test
test
push key: 0, val: 0
push key: 1, val: 10
push key: 2, val: 20
push key: 3, val: 30
push key: 4, val: 40
push key: 5, val: 50
push key: 6, val: 60
push key: 7, val: 70
push key: 8, val: 80
push key: 9, val: 90
get key: 0, val: 0
get key: 1, val: 10
get key: 2, val: 20
get key: 3, val: 30
get key: 4, val: 40
get key: 5, val: 50
get key: 6, val: 60
get key: 7, val: 70
get key: 8, val: 80
get key: 9, val: 90

到此,关于"C调用C++代码的方法是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

C++ 代码 编译 方法 封装 学习 库文件 接口 更多 语言 帮助 运行 实用 接下来 例子 关键 关键字 函数 容器 文件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州互联网科技公司 浩特互联网科技 鑫亿盛互联网科技 深圳艾佳互联网科技 云创客互联网科技公司 天速互联网络科技有限公司 科技与互联网哪个更好 现代互联网科技股 中化能源互联网科技招聘 昊天互联网科技有限公司 杭州壁岐互联网科技有限公司 坤平互联网科技 中和天地互联网科技有限公司 互联网方面的科技前沿 2021世界互联网领先科技成果发布 普陀区互联网教育科技管理办法 绵阳真晨互联网科技有限公司 优雇互联网科技有限公司 互联网企业和网络科技有限公司 互联网 科技节活动 微视频大赛 广州淘业互联网络科技 友谊互联网络科技 海南购全球互联网科技 字节跳动和互联网科技 速维有品互联网信息科技(苏州)有限公司 洛阳共同富裕互联网科技有限公司 深圳艾果互联网通讯科技 阿里互联网科技企业 广东工业互联网大赛深圳学泰科技 21世纪互联网科技成就
0