Visual Studio C/C++如何使用远程设备
How does Visual Studio C/C++ work with remote device?
我正在为远程设备编写C代码(实际上是一个带有Armbian Legacy Server的Orange Pi Zero——Debian Jessie)。需要明确的是,所有编译都发生在Linux远程设备上。我正在尝试为该设备编写C代码程序。让我们从简单开始。
#include <stdio.h>
int main() {
printf("nHello World!!n");
int number = 15;
printf("15 = %dn", number);
return 0;
}
现在我知道我可以SSH到设备,登录,创建一个helloWorld.c文件,并将代码粘贴到那里(通过nano helloWorld.c
)。然后我可以用在设备上编译代码
gcc helloWorld.c -o helloWorld
然后,我可以从SSH控制台通过bash/shell命令运行可执行文件:
./helloWorld
效果很好。到目前为止,一切都很好。shell编辑器适用于小文件,但当事情变得复杂时,这是一种痛苦。我想要一份我在桌面上写的东西。因此,我尝试使用Microsoft Visual Studio(Community Edition 2015,更新3)来完成这项工作。我在上学习教程https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/这个教程看起来是相对最新的,有点像。我加载了Visual C++for Linux开发扩展。需要注意的一点是,我没有使用从VisualGDB.com购买的软件包。相反,我通过将以下依赖项下载到远程设备
sudo apt-get install openssh-server g++ gdb gdbserver
我在Visual Studio中通过模板-->Visual C++-->跨平台-->Linux创建了一个项目,然后选择空项目。我将所有SSH登录信息加载到Visual Studio。我可以构建/编译这个项目。当我这样做,然后SSH到远程Linux设备时,我可以看到在我的根目录中添加了一个projects
文件夹。
projects directory
helloWorld directory
bin directory
ARM directory
Debug directory
helloWorld.out file <--- ./helloWorld.out works!
obj directory
ARM directory
Debug directory
helloWorld.o file
helloWorld.c file
我可以通过在桌面上逐步执行代码来调试项目。我可以观察变量,在调试模式下看到很棒的东西。有几件事我就是不明白。
1) 当我从桌面Visual Studio"运行"代码时,我看不到任何输出。输出窗口是空白的。(我可以通过SSH连接到Linux服务器bin目录,然后运行./helloWorld.out
,在SSH解释器屏幕上看到一切。)提示:如果我可以成功地远程执行代码,难道我就不能远程看到输出吗?我应该在Visual Studio中看到输出吗?
2) 尚不清楚如何添加添加链接资源以便从Visual Studio进行编译。(如果我通过SSH连接到设备,我只需键入gcc helloWorld.c -o helloWorld -lwiringPi
来添加额外的资源。)如何在Visual Studio中添加额外的链接资源?
经过一番复习,我发现了上面发布的两个问题的答案。
1) 控制台窗口从顶部菜单,调试-->Linux控制台
2) 链接的资源。
首先确保在远程Linux设备上正确加载和编译库。在我的情况下,我一直在使用通用输入/输出(GPIO)WiringPi库用于树莓派,可在此处或此处获得。有关Orange Pi的WiringOp库,请查看此处。
要在Visual Studio中添加库引用,请从顶部菜单"项目"->"属性"->"链接器"->"输入"开始。在标题为"Library Dependencies"的块中,您将添加库名称,在我的例子中是"wiringPi"。这会生成命令行,告诉系统在远程设备上查找该库。所需的文件实际上位于远程Linux设备上的/usr/local/lib(通常是xxx.so文件)。
另一个有趣的注意事项是:如果你没有在目标Linux远程设备上编译正确的库,那么当你试图运行程序时,在visualstudio中收到的错误消息有点神秘。你会看到"致命错误:wiringPi.h:没有这样的文件或目录。"这条消息指的是远程设备上丢失的内容,这一点并不完全清楚。
注意:这是一篇关于使用Visual Studio和C程序制作树莓派的文章。
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- 如何配置Visual Studio Code以使用cygwin,cmake和gcc进行调试
- 使用visual studio 2019正确设置tinycc,找不到库libtcc1-32.a
- 在Windows 10上使用Visual Studio 2019构建的Tesseract API c ++程序在Wind
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 使用 Visual Studio 2019 构建 Hello World wxwidgets 应用程序时出错
- 如何在调试中使用Visual Studio正确编译WebRTC?
- C++ 使用 Visual Studio 2020 不能使用 .length()
- 在Visual Studio 2017中使用recursive_directory_iterator
- 使用Visual Studio在虚幻引擎中创建一个新的类c ++给了我太多的错误
- 将Qt与Visual Studio Code(Windows)一起使用
- 使用 Visual Studio 2019 编译 Unicode
- 使用 CMake,Microsoft MPI 和 Visual Studio 2017 找不到 mpi.h
- C++20 使用 Visual Studio 编译模块:不编译或导入 ixx 文件
- 使用 CMake 和 Visual Studio 2019 编译 GLEW?
- 我可以在Visual Studio 2019上的项目下使用多个主函数吗?