Я знаю, что есть много вопросов, похожих на этот, но, похоже, ни один из них не отвечает на мой вопрос. Я пишу код модульного теста и вызываю следующую функцию
ads1259_init(&settings, &storage);
, которая должна инициировать обмен данными faux spi на x86. Однако я получаю сообщение об ошибке компоновщика undefined, указав ссылку на `ads1259_init '.
Я определил функцию в файле заголовка как
StatusCode ads1259_init(Ads1259Settings* settings, Ads1259Storage* storage);
, а в файле. c как
StatusCode ads1259_init(Ads1259Settings* settings, Ads1259Storage* storage) {...}
Мы используем make для нашей сборки system (о котором я знаю очень мало) и make-файл для библиотеки драйверов, который должен вызываться при запуске команды make test LIBRARY=ms-drivers PLATFORM=x86
, которая проверяет все драйверы в этом каталоге:
# Defines $(T)_SRC, $(T)_INC, $(T)_DEPS, and $(T)_CFLAGS for the build makefile.
# Tests can be excluded by defining $(T)_EXCLUDE_TESTS.
# Pre-defined:
# $(T)_SRC_ROOT: $(T)_DIR/src
# $(T)_INC_DIRS: $(T)_DIR/inc{/$(PLATFORM)}
# $(T)_SRC: $(T)_DIR/src{/$(PLATFORM)}/*.{c,s}
$(T)_DEPS := $(PLATFORM_LIB) libcore
ifeq (x86,$(PLATFORM))
$(T)_test_ltc_afe_MOCKS := spi_exchange
endif
I Я запутался, потому что есть около 8 других драйверов, которые используют тот же файл make и настроены с той же файловой структурой, что и мой. Все они отлично проходят проверку, когда я закомментирую эту строку и запускаю команду. Я использую код VS, и все наши сборки выполняются в vagrant, виртуальном ящике linux. Я считаю, что проблема в том, что компоновщик не находит реализацию. c, но я не могу понять, почему. Если у кого-то есть предложения, они были бы очень признательны.