Это не проблема automake
- вы делаете правильные вещи (или, по крайней мере, близки) к Makefile.am
.
Проблема в том, что ваш символ объявлен без extern "C"
, но определен только в C, поэтому, когда компилятор C ++ берет ваш main.cpp
, он ожидает найти искаженные символы (которые кодируют сигнатуру функции, то есть количество и типы параметров) , а не простой (C).
Вы можете сказать, что это так, потому что он ищет open_ports(unsigned int, unsigned int)
, а не просто open_ports
.
Самое простое решение состоит в том, чтобы изменить ваш main.cpp
, чтобы он говорил:
extern "C" {
#include "test.h"
}
Это заявляет, что заголовок test.h
включает только C объявления, которые затем будут генерировать правильный поиск символов для того, что вы определяете в test.c
.