Как использовать внешние библиотеки в CLion
Я хотел бы использовать внешние библиотеки, загружаемые средой IDE Arduino, в расположение альбома для разработки по умолчанию (~/Arduino/libraries/).
Если вы откроете менеджер библиотек в Arduino IDE и установите внешнюю библиотеку (например, библиотеку датчиков DHT 1.3.7 и ее зависимость Adafruit Unified Sensor 1.0.3), она будет загружена в папку sketchbook, и вы сможете свободно использовать их в случае написания кода в Arduino IDE.
Однако мне очень нравится автоматическое завершение кода, управление исходным кодом в репозитории GIT, форматирование исходных строк и т.д. Такие функции не предоставляются средой IDE Arduino, поэтому я перешел на CLion.
Я установил плагин CLion и Arduino поддержки 1.4.4 и создал новый проект скетча Arduino.
Структура проекта:
.
+--cmake
+--Platform
+--Arduino.cmake
+--ArduinoToolchain.cmake
+--libs
+--Adafruit_Sensor
+--Adafruit_Sensor.h
+--library.properties
+--README.md
+--DHT
+--DHT.cpp
+--DHT.h
+--DHT_U.cpp
+--DHT_U.h
+--keywords.txt
+--library.properties
+--README.md
+--CMakeLists.txt
+--first_test_project.ino
+--User_Setup.h
first_test_проект.ino:
#include <Arduino.h>
#include "User_Setup.h"
#include <libs/Adafruit_Sensor/Adafruit_Sensor.h>
#include <libs/DHT/DHT.h>
DHT *dht;
void setup() {
dht = new DHT(7, DHT22);
}
void loop() {
}
Поэтому я скопировал загруженные библиотеки из папки ~/Arduino/libraries в папку проекта в папке libs.
Когда я пытаюсь загрузить код на плату Arduino, в журнале появляется следующее:
undefined reference to `DHT::DHT(unsigned char, unsigned char, unsigned char)'
Не мог бы кто-нибудь, пожалуйста, объяснить, что здесь не так.
Большое вам спасибо!
@Akos, 👍4
Обсуждение2 ответа
Вы добавили свои библиотеки в файлы cmake?
У меня нет никакого опыта работы с CLion, но неопределенная ссылка
обычно означает, что
компоновщик не смог найти функцию/класс, который вы используете.
Поэтому убедитесь, что библиотеки скомпилированы и компоновщик знает, где найти объектные файлы.
На мой взгляд, самый простой способ для новичка-использовать Platformio, он автоматически настраивает проект CLion.
Дополнительную информацию смотрите в документах.
у вас есть какая-либо ссылка для настройки платформы ввода-вывода, я использую CLion в качестве редактора и arduino IDE для компиляции и развертывания на микроконтроллере, если есть какое-либо доступное руководство, было бы полезно поделиться. Спасибо, @Omar S.
@Омарс. смотрите отредактированный ответ. Он также настраивает задачи сборки для загрузки, поэтому нет необходимости использовать Arduino IDE. Но внимательно прочитайте документы: не забудьте нажать горячую клавишу "сборка" для всех задач вместо "выполнить"., @artem
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Вы уверены, что используете правильную сигнатуру метода, похоже, что эта сигнатура метода конструктора не существует: dht = новый DHT(7, DHT22); принимает 2 аргумента, по сравнению с тем, что жалуется, 3 аргумента, что-то не так, @Omar S.