⚙️ Использование C++ кода в Си
Опубликовано: 6 ноября 2023 г.
Введение
В данном руководстве на паре простых примеров покажу, как использовать в программе на Си код на языке 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