【问题标题】:VC_Linux - Visual Studio c++ Linux Cross Platform build for Raspberry Pi - Library issueVC_Linux - 适用于 Raspberry Pi 的 Visual Studio c++ Linux 跨平台构建 - 库问题
【发布时间】:2016-10-25 21:44:18
【问题描述】:

我正在试验 Visual Studio 的 VC_Linux for Raspberry Pi3,希望能够编译和调试代码。

我正在尝试在 Pi 上编写 UDP 客户端和服务器。

开箱即用的 VCLinux 非常适合一个简单的 hello world 项目...但是当我尝试从 Pi 中引用存在于 Pi 文件夹的 usr/include 中的源文件时,Visual Studio 开始抱怨源文件不存在或找不到。

例如,我需要 socket.h 文件来构建 UDP 客户端/服务器。在 Pi 中可以找到

usr\include\asm-generic\socket.h

我将整个 usr\include 文件从 Pi 复制到我的 Windows 机器(将其重命名为 PI_Source,因此包含文件夹与“C:\Program Files (x86)\Microsoft Visual Studio 14.0\ VC\Linux\包括”)。我尝试将复制的 PI_Source 文件夹添加到项目属性中的包含目录和源目录。

尝试构建以下文件会导致错误...Visual Studio 抱怨找不到 socket.h 和 sockios.h。

#include <cstdio>
#include <asm-generic\socket.h>
#include <asm-generic\sockios.h>

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

如何让 Visual Studio 成功构建并正确链接源文件和目录?

我是否将 Pi Include 文件夹放在了错误的路径中?是否需要放在
下 *C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\Linux\include\usr\include*
还有其他建议/建议让我尝试吗?

【问题讨论】:

    标签: visual-studio-2015 raspberry-pi cross-compiling raspberry-pi3


    【解决方案1】:

    您为头文件使用了错误的路径分隔符,在 Linux 上为 /,在 Windows 上为 \。幸运的是,Visual C++ 接受这两种形式,所以跨平台代码应该使用/

    更一般地说。您通常会在项目设置的 C/C++ 常规页面中指定包含路径,而不是 VC++ 目录。

    您在 C/C++ 常规页面的 Additional Include Directories 中指定的包含路径有两个用途:

    1. 远程 Linux 系统上的路径,例如/usr/include/asm-generic 告诉g++ 在编译期间到哪里寻找头文件

    2. Windows 主机上的一条路径,用于告诉 VS 在哪里可以找到 IntelliSense 的标头

    在 VCLinux 1.0.5 中,您需要同时指定两者。对于相对路径,这可能会导致同一路径被指定两次。

    /usr/include 默认由g++ 搜索,VCLinux 为 IntelliSense 的标准 C++ 运行时提供头文件副本,因此您通常不需要为这些项目设置添加任何内容。但是,VCLinux 发行版中缺少您想要的标头,尽管您的源代码可以正常编译,但 IntelliSense 将不知道标头。所以是的,将标题放在 Windows 系统上的某个位置,任何地方都可以,并在项目设置中指定一次 Windows 路径。

    【讨论】:

      猜你喜欢
      • 2018-12-01
      • 2010-11-17
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 2021-09-30
      • 2017-06-06
      • 2013-06-23
      • 1970-01-01
      相关资源
      最近更新 更多