1

我正在嘗試Visual Studio的VC_Linux for Raspberry Pi3,希望能夠編譯和調試代碼。VC_Linux - Visual Studio C++ Linux跨平臺構建Raspberry Pi - 庫問題

我正在嘗試在Pi上編寫UDP客戶端和服務器。

開箱即用VCLinux非常適合簡單的hello世界項目...但是,只要我嘗試引用pi文件夾中存在的Pi文件夾中的源文件,Visual Studio就會開始抱怨源文件不存在或無法找到。

例如,我需要socket.h文件來構建UDP客戶端/服務器。在PI這可以在

usr\include\asm-generic\socket.h 

找到我複製了整個USR \包括從PI文件到我的Windows機器(重命名它PI_Source所以包括文件夾是不一樣的默認「C中的一種: \ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ Linux \ include「)。我試圖將複製的PI_Source文件夾添加到項目屬性中的包含目錄和源目錄中。

VC++ Directories

試圖建立在一個錯誤的以下文件結果...使用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; 
} 

Build Error

如何獲取Visual Studio來成功建立與正確關聯的源文件和目錄?

我把Pi Include文件夾放在錯誤的路徑中嗎?它是否需要被放置在
* C:\ Program Files文件(x86)\ Microsoft Visual Studio 14.0 \ VC \ Linux \ include \ usr \ include *
任何其他建議/建議讓我嘗試?

回答

1

您的頭文件使用了錯誤的路徑分隔符,在Linux上它的編碼爲/,在Windows上它的編號爲\。幸運的是Visual C++接受這兩種形式,所以跨平臺的代碼應該使用/

更一般地說。您通常會在項目設置的C/C++常規頁面中指定包含路徑,而不是VC++目錄。

的包括您在C/C++一般頁Additional Include Directories指定路徑服務於兩個目的:

  1. 遠程Linux系統上的路徑,例如/usr/include/asm-generic告訴g++到哪裏尋找頭編譯

  2. 在Windows主機上的路徑,告訴VS在哪裏可以找到頭的智能感知

在VCLinux 1.0.5你需要指定。使用相對路徑時,這可能導致指定兩次相同的路徑。

/usr/include默認搜索g++,並且VCLinux爲標準C++運行庫提供了用於智能感知的標頭副本,因此您通常不需要爲這些項目設置添加任何內容。然而,你想要的頭文件在VCLinux發行版中是缺少的,雖然你的源代碼編譯得很好,但頭文件不會被IntelliSense知道。所以是的,把標題放在Windows系統的某個地方,在任何地方都很好,並且在項目設置中只指定一次Windows路徑。