Blog/content/posts/2023/c/use-cpp-code-in-c.md

1.9 KiB
Raw Blame History

title date draft tags
⚙️ Использование C++ кода в Си 2023-11-06T01:29:12+03:00 false
c
cpp
tutorial
development

Введение

В данном руководстве на паре простых примеров покажу, как использовать в программе на Си код на языке C++.

Реализация динамическй библиотеки

Напишем функцию void f(int i) на C++, которая выводит в терминал число.

// lib.cpp
#include <iostream>

extern "C" void f(int);

void f(int i) {
    std::cout << i << std::endl;
}

Программа на Си, которая вызывает функцию C++ f():

// main.c
void f(int i);

int main(void) {
    f(13);
    return 0;
}

Компиляция

g++ -fpic -shared src/lib.cpp -o libaaa.so
gcc src/main.c -L. -laaa -o app

# Запуск
LD_LIBRARY_PATH=. ./app

Реализация статической библиотеки

Функция на C++, которая выводит в терминал int.

// lib.cpp
#include <iostream>

extern "C" {
    void print_cout(const char *str) {
        std::cout << str << std::endl;
    }
}

Программа на Си, которая вызывает функцию C++:

// main.c
void print_cout(const char *);

int main(void) {
    print_cout("hello world!");
    return 0;
}

Компиляция

gcc -c src/main.c -o main.o
g++ -c src/e.cpp -o aaa.o
g++ -o app main.o aaa.o

# Запуск
./app

Полезные ссылки