VC_Linux — кроссплатформенная сборка Visual Studio c Linux для Raspberry Pi — проблема с библиотекой

#visual-studio-2015 #raspberry-pi #cross-compiling #raspberry-pi3

#visual-studio-2015 #raspberry-pi #перекрестная компиляция #raspberry-pi3

Вопрос:

Я экспериментирую с Visual Studio VC_Linux для Raspberry Pi3 в надежде на возможность компиляции и отладки кода.

Я пытаюсь закодировать UDP-клиент и сервер на Pi.

Готовый VCLinux отлично работал для простого проекта hello world… но как только я пытаюсь ссылаться на исходные файлы из Pi, которые существуют в usr / include папки Pi, Visual Studio начинает жаловаться на то, что исходные файлы не существуют или что они не могут быть найдены.

Например, мне нужен сокет.файл h для сборки UDP-клиента / сервера. В Pi это можно найти в

 usrincludeasm-genericsocket.h
  

Я скопировал весь файл usr include с Pi на свой компьютер с Windows (переименовав его в PI_Source, чтобы папка include не совпадала с папкой по умолчанию «C:Program Files (x86) Microsoft Visual Studio 14.0VC Linuxinclude»). Я попытался добавить скопированную папку PI_Source в свои каталоги include и исходные каталоги в свойствах проекта.

Каталоги VC

Попытка создания следующего файла приводит к ошибке…Visual Studio жалуется, что не может найти сокет.h и sockios.h.

 #include <cstdio>
#include <asm-genericsocket.h>
#include <asm-genericsockios.h>

int main()
{
    printf("hello from Pi_Testing!n");
    return 0;
}
  

Ошибка сборки

Как мне заставить Visual Studio успешно выполнить сборку с правильными ссылками на исходные файлы и каталоги?

Я помещаю папку Pi Include в неправильный путь? Нужно ли его размещать под
*C:Program Файлы (x86) Microsoft Visual Studio 14.0 VC Linux включить usr включить*
Любые другие рекомендации / предложения для меня попробовать?

Ответ №1:

Вы используете неправильный разделитель пути для ваших заголовочных файлов, в Linux это / и в Windows это . К счастью, Visual C принимает обе формы, поэтому следует использовать кроссплатформенный код / .

В более общем плане. Обычно вы указываете пути включения на общей странице C / C в настройках проекта, а не в каталогах VC .

Пути включения, которые вы указываете на Additional Include Directories странице C / C General, служат двум целям:

  1. путь в удаленной системе Linux, например /usr/include/asm-generic , для указания g , где искать заголовок во время компиляции

  2. путь на хосте Windows, чтобы указать VS, где найти заголовок для IntelliSense

В VCLinux 1.0.5 вам необходимо указать оба. При использовании относительных путей это может привести к тому, что один и тот же путь будет указан дважды.

/usr/include g по умолчанию выполняется поиск по, и VCLinux предоставляет копии заголовков для стандартной среды выполнения C для IntelliSense, поэтому обычно вам не нужно ничего добавлять к настройкам проекта для них. Однако нужные заголовки отсутствуют в дистрибутиве VCLinux, и, хотя ваш исходный код будет скомпилирован нормально, заголовки не будут известны IntelliSense. Итак, да, поместите заголовок где-нибудь в вашей системе Windows, где угодно, и укажите путь к Windows, только один раз, в настройках проекта.