当前位置: 首页 > news >正文

C调用C++中的类

文章目录

  • 测试代码

测试代码

在C语言中调用C++类,需要遵循几个步骤:

在C++代码中,确保C++类的函数是extern “C”,这样可以防止名称修饰(name mangling)。

使用头文件声明C++类的公共接口,并且为这个头文件提供C语言兼容的接口。

编译C++代码为对象文件或库。

在C语言代码中包含这个头文件,并且链接C++库或对象文件。

c++ MyClass.h

#ifdef __cplusplus
extern "C" {
#endifclass MyClass {
public:MyClass();void doSomething();
};#ifdef __cplusplus
}
#endif

MyClass.cpp

#include "MyClass.h"
#include <iostream>MyClass::MyClass() {// 构造函数实现
}void MyClass::doSomething() {// 方法实现std::cout << "Doing something in C++ class" << std::endl;
}

C调用代码

#include "MyClass.h"int main() {// 创建C++类的实例MyClass myObj;// 调用C++类的方法myObj.doSomething();return 0;
}

编译

g++ -c MyClass.cpp -o MyClass.o
gcc -c main.c -o main.o
g++ -shared -o libMyClass.so MyClass.o
gcc main.o -L. -lMyClass -o main
http://www.lryc.cn/news/371370.html

相关文章:

  • NFTScan 正式上线 Sei NFTScan 浏览器和 NFT API 数据服务
  • 2024年高考:计算机相关专业前景分析与选择建议
  • SQL聚合函数---汇总数据
  • webpack5新特性
  • java单体服务自定义锁名称工具类
  • 整理好了!2024年最常见 20 道并发编程面试题(四)
  • 持续交付一
  • 基于 Python 解析 XML 文件并将数据存储到 MongoDB 数据库
  • Interview preparation--案例加密后数据的模糊查询
  • 一个简单的R语言数据分析案例
  • springCloudAlibaba之分布式事务组件---seata
  • 无公网IP与服务器完成企业微信网页应用开发远程调试详细流程
  • CSS 字体颜色渐变
  • 【机器学习】基于CTC模型的语音转换可编辑文本研究
  • 数据结构错题答案汇总
  • 搞AI?中小企业拿什么和大厂拼?
  • 光伏电站阵列式冲击波声压光伏驱鸟器
  • Webrtc支持FFMPEG硬解码之解码实现(三)
  • RIP协议
  • 计算机视觉与深度学习实战,Python为工具,基于光流场的车流量计数应用
  • 插入排序(排序算法)
  • 【附带源码】机械臂MoveIt2极简教程(六)、第三个demo -机械臂的避障规划
  • innovus:route secondary pg pin
  • btstack协议栈实战篇--LE Peripheral - Test Pairing Methods
  • git下载项目登录账号或密码填写错误不弹出登录框
  • 平移矩阵中的数学思考
  • 【机器学习】Qwen2大模型原理、训练及推理部署实战
  • JetLinks开源物联网平台社区版部署教程
  • QT学习过程中遇到的问题自记
  • 自学网络安全的三个必经阶段(含路线图)