В настоящее время я пытаюсь написать приложение для Raspberry Pi 3B под Rasbpian с помощью плагина Linux Development в сообществе Visual Studio 2017.Мне удалось успешно развернуть пример «Blink», который, согласно учебному пособию, был благородно прикреплен людьми Microsoft, и все прошло хорошо.Я даже сделал некоторую передачу через SPI благодаря библиотеке wiringPi.Затем я хотел бы добавить некоторый графический интерфейс в свое приложение, чтобы можно было, например, сделать некоторую передачу по нажатию кнопки на экране.
IntelliSense намекнул мне, что, на самом деле, есть gtk-3.0 библиотека присутствует в наборе инструментов.Кажется, что библиотеки копируются с целевого устройства на каждое соединение или около того, и я установил gtk на мой Raspberry.Поэтому я добавил в этот пример Blink простую строку:
#include <gtk-3.0/gtk/gtk.h>
При попытке компиляции, конечно, было почти 4 тыс. Ошибок.Ну, достаточно сказать, с небольшим намеком из этого старого урока и небольшим количеством проб и ошибок, мне удалось добавить этот набор ссылок в Отладка / Свойства проекта / Свойства конфигурации / Каталоги VC ++ / Каталоги файлов заголовков:
Все идет в многообещающем направлении, так как количество ошибок уменьшилось с 4k до одного:
gtk-3.0\gtk\gtk.h: No such file or directory
Независимо от того, чтоэтот файл фактически находится в этом месте:
Независимо от комбинации ссылок в конфигурации выше и использования композиции операторов компилятор (?) не может найтиэтот чертов файл
Пожалуйста, помогите
EDIT
Я только что подтвердил, что это действительно проблема с целевой конфигурацией.Это плохо или хорошо, в зависимости от точки зрения.Хорошо, потому что, вероятно, все хорошо с настройкой VS.Плохо, потому что я ничего не знаю о компиляции под Linux.
На цели (Raspberry Pi 3B) все компоненты для компиляции копируются плагином Linux Development.Итак, в Терминале я выполнил строку:
g++ main.cpp -o Blink2onRPi
и получил
main.cpp:4:21: fatal error: gtk/gtk.h: no such file or directory
Теперь я изменил строку include в main.cpp на целевом RPi так:
#include <gtk-3.0/gtk/gtk.h>
А теперь его не хватает <gdk/gdk.h>
!Когда это изменение сделано на устройстве с Windows-хостом - тот же результат, но в VS.
Как я имел дело с подобной проблемой в VS, после установки ссылок для IntelliSense (теперь, видимо, они для этой цели), теперь, вероятно,аналогичные зависимости должны быть установлены где-то на Raspbian.Но где?
EDIT2
При выполнении:
g++ main.cpp -o Blink2onRPi `pkg-config --cflags --libs gtk+-3.0`
на целевом RPi больше нет ошибок, связанных с GTK, только wiringPi (также присутствующий в проекте) undefinedРекомендации.Возникает два возможных вопроса:
1) Как настроить wiringPi на RPi, чтобы проект мог быть скомпилирован вручную на цели, и
2) Как / где добавить вышеуказанную строку в Visual Studio,поэтому он выполняется удаленно со всеми зависимостями GTK, добавленными должным образом к цели
Исследование стандартной библиотеки wiringPi (так как это пример с Blink для кросс-компиляции разработки Linux) Я обнаружил, что в Project Properties / Linker / Input/ Зависимости библиотеки есть загадочная запись:
wiringPi
Только это, не более того.После удаления этой записи при компиляции выявляются те же ошибки, что и ранее для цели (которой явно не хватает правильной настройки wiringPi) - неопределенные ссылки (не отмечены никакие отсутствующие заголовки).Может ли это быть актуально для дела?Если так, как я могу добавить туда такую запись, которая будет иметь дело с отсутствующими зависимостями GTK?