При сборке кода на c - undefined reference при линковке со своей библиотекой на c++

Есть код на C, 1 файл main, который импортирует либу. Также есть либа, в которой 4 файла:

declaration.h, declaration.cc, lib.h, lib.cc

declaration.h, declaration.cc играют роль "прослойки", внутри declaration.h только описания методов, внутри 'extern C'.

Есть простой cmake:

set(CMAKE_EXE_LINKER_FLAGS "-lrt")

SET (SOURCES
    ./main.c 
)

INCLUDE_DIRECTORIES (
    /lib/ # тут путь до declaration.h
)

ADD_EXECUTABLE (test ${SOURCES})
TARGET_LINK_LIBRARIES (test lib)

Как только используется хоть 1 метод из либы, при сборки cmake-ом во время линковки вываливается куча ошибок формата undefined reference to std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&).

Как в данном случае подключить c++ библиотеку к коду на c?


Ответы (1 шт):

Автор решения: joker

Данная проблема берет свое начало в CMake файле - main имеет расширение .c, соответственно CMake использует gcc и пытается скомпилировать С-шное приложение. Здесь нужно расширение файла поменять, либо вручную добавить в зависимости libstdc++/libc++.

→ Ссылка