Я пытаюсь создать проект CMake, который вызывает код C из C ++, и я получаю неопределенные символы, хотя я (AFAIK) правильно использую "extern C".
CMakeLists.txt:
cmake_minimum_required(VERSION 3.0)
project(CTest LANGUAGES CXX)
add_executable(test main.cpp lib.c)
main.cpp:
#include "lib.h"
int main()
{
printit();
return 0;
}
lib.c:
#include <stdio.h>
#include "lib.h"
int printit()
{
printf("Hello world\n");
return 0;
}
lib.h:
extern "C" int printit();
Это дает мне ошибку «неопределенная ссылка на printit».
Если я просто создаю это из командной строки, это прекрасно работает:
g++ main.cpp lib.c
Что я делаю неправильно?