Компиляция C в проекте С++
Как можно скомпилировать или интегрировать .c в c++ проект?
Источник: Stack Overflow на русском
Как можно скомпилировать или интегрировать .c в c++ проект?
Принцип - предварительная компиляция разных языков в объектный файл. И потом эти объектные файлы можно уже собрать линковщиком. Язык C++ ушёл чуток от Си и чтобы имена функций и принципы передачи аргументов могли связаться как-то с Си функциями нужно заголовочный файл объявить со знаком extern "C"
. Далее линковщик всё соберёт.
f.h
int Cfun( int ) ;
f.c
# include "f.h"
int Cfun( int i ){
return i;
}
g.hpp
int CPPfun( int ) ;
g.cpp
# include "g.hpp"
int CPPfun( int i ){
return i;
}
main.cpp
extern "C" {
# include "f.h"
}
# include "g.hpp"
int main(){
int c = Cfun(0);
int p = CPPfun(0);
}
Вот пример использования с компилятором gcc.
gcc -c f.c
g++ -c g.cpp main.cpp
g++ f.o g.o main.o -o main
Компилируй всё в объектные файлы, создай файл link.ld , что писать в интернете смотри, и линкуй всё через линковщик ld (команда тоже в интернете, ищи линковка c и c++), компонуй из объектника в исполняемый и готово!