#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 и исходные каталоги в свойствах проекта.
Попытка создания следующего файла приводит к ошибке…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, служат двум целям:
-
путь в удаленной системе Linux, например
/usr/include/asm-generic
, для указанияg
, где искать заголовок во время компиляции -
путь на хосте Windows, чтобы указать VS, где найти заголовок для IntelliSense
В VCLinux 1.0.5 вам необходимо указать оба. При использовании относительных путей это может привести к тому, что один и тот же путь будет указан дважды.
/usr/include
g
по умолчанию выполняется поиск по, и VCLinux предоставляет копии заголовков для стандартной среды выполнения C для IntelliSense, поэтому обычно вам не нужно ничего добавлять к настройкам проекта для них. Однако нужные заголовки отсутствуют в дистрибутиве VCLinux, и, хотя ваш исходный код будет скомпилирован нормально, заголовки не будут известны IntelliSense. Итак, да, поместите заголовок где-нибудь в вашей системе Windows, где угодно, и укажите путь к Windows, только один раз, в настройках проекта.