C调用C++中的类

文章目录

测试代码

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

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

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

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

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

c++ MyClass.h

#ifdef __cplusplus
extern "C" {
#endif
 
class 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

相关推荐

  1. C调用C++

    2024-06-13 13:20:03       36 阅读
  2. C++ .h文件调用

    2024-06-13 13:20:03       52 阅读
  3. C#

    2024-06-13 13:20:03       32 阅读
  4. C#A调用B方法,在方法更新B控件

    2024-06-13 13:20:03       35 阅读
  5. C++抽象

    2024-06-13 13:20:03       35 阅读
  6. 2312d,d语言调用C++

    2024-06-13 13:20:03       64 阅读
  7. C#动态调用C++DLL函数

    2024-06-13 13:20:03       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 13:20:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 13:20:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 13:20:03       87 阅读
  4. Python语言-面向对象

    2024-06-13 13:20:03       96 阅读

热门阅读

  1. 【文献阅读】基于高阶矩的波形分类方法

    2024-06-13 13:20:03       37 阅读
  2. Spring MVC的控制器是不是单例模式

    2024-06-13 13:20:03       34 阅读
  3. HTML下雪/烟花

    2024-06-13 13:20:03       27 阅读
  4. 关于windows脚本的一些东西

    2024-06-13 13:20:03       35 阅读
  5. Python有哪些经典的常用库?

    2024-06-13 13:20:03       35 阅读
  6. 聊聊JetCacheProxyConfiguration

    2024-06-13 13:20:03       30 阅读
  7. 测试面试点

    2024-06-13 13:20:03       38 阅读
  8. 【星海随笔】ELK优化

    2024-06-13 13:20:03       38 阅读
  9. [EFI]NUC11电脑 Hackintosh 黑苹果efi引导文件

    2024-06-13 13:20:03       78 阅读
  10. 13. FastLED 示例3则

    2024-06-13 13:20:03       71 阅读
  11. gitlab下载及安装

    2024-06-13 13:20:03       33 阅读