【问题标题】:using linux header files in visual studio在 Visual Studio 中使用 linux 头文件
【发布时间】:2013-11-18 04:23:46
【问题描述】:

我试图在 Visual Studio 2013 上使用 linux 内核头文件。 我想这样做是为了自动完成。

我注意到 stdio.h 文件位于 C:\Program Files\Visual Studio 12.0\VC\crt\src 中, 因此,我将包含内核头文件的 linux 文件夹复制到 src 文件夹中。 但是,Visual Studio 似乎没有找到这些头文件。

例如: #include <linux/kernel.h>

显示错误:无法打开源文件“linux/kernel.h”

我尝试将所有斜杠字符更改为反斜杠,但是,它不能解决问题。 如果我想让visual studio知道这个头文件存在怎么办?

我知道我可以将 kernel.h 移动到当前文件夹并使用 #include "kernel.h"

但是,我想将系统头文件保留在我的计算机中,并且 需要时与#include <linux/kernel.h> 一起使用。

【问题讨论】:

    标签: c visual-studio visual-studio-2013 visual-studio-2017


    【解决方案1】:
    #include <kernel.h>
    

    并将 C:\Program Files\Visual Studio 12.0\VC\crt\src\linux 添加到include path(如果使用的是随附的 VS2017)。

    获取kernel.h文件,即内核源码,确定需要的内核版本,从kernel.org获取src,例如: 5.4.26

    【讨论】:

    • 不知道现在还是这样或者至少2019年我没有这样的文件夹
    • @GrantCurell 我认为获取文件通常最可靠的方法是从 kernel.org 获取它
    【解决方案2】:

    在 Visual Studio 2015 中,替代方法是安装 Visual C++ for Linux Development 和 Visual C++ for Android Development 模板。在撰写本文时,Linux 标头仅存在于 Android 开发文件夹中,在我的机器上为 C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r10e\platforms\android-21\arch-x86_64\usr\include。将该路径添加到包含路径,Intellisense 适用于常见的 Linux 文件,例如 &lt;sys/socket.h&gt;

    【讨论】:

      【解决方案3】:

      VS 2017 下的当前位置,Android 文件位于单独的树中,32 位和 64 位:

      C:\Microsoft\AndroidNDK{,64}\android-ndk-r{NDK_VER}c\platforms\android-{P_VER}\arch-x86{,_64}\usr\include
      
      NDK_VER -- versions of the NDK, currently 12,13,15  
      P_VER   -- target android platform version (aka level), currently the highest is 26
      

      例子:

      C:\Microsoft\AndroidNDK\android-ndk-r15c\platforms\android-26\arch-x86\usr\include C:\Microsoft\AndroidNDK\android-ndk-r15c\platforms\android-26\arch-x86_64\usr\include C:\Microsoft\AndroidNDK64\android-ndk-r15c\platforms\android-26\arch-x86\usr\include C:\Microsoft\AndroidNDK64\android-ndk-r15c\platforms\android-26\arch-x86_64\usr\include

      这反映了 VS 中的一般“新风格”,其中构建平台和目标平台是分离和正交的。 arch目标平台版本下还有arch-{arm,mips}{,64}这样6个文件夹。

      AndroidNDK 和 AndroidNDK64 中的包含文件相同,并且在一个 NDK 版本下,只有 machine 和 asm 文件夹下的文件不同(对于 Intel 和 Mips,即使 asm 下的文件对于 32 位和 64 位也是相同的)。

      【讨论】:

        猜你喜欢
        • 2019-02-07
        • 2017-08-18
        • 2011-10-06
        • 2016-06-15
        • 2021-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多