【发布时间】:2019-02-22 23:13:30
【问题描述】:
我目前正在尝试借助 Visual Studio 2017 社区中的 Linux 开发插件在 Rasbpian 下为 Raspberry Pi 3B 编写应用程序。根据教程,我成功地部署了由微软人员高贵附加的“Blink”示例,并且进展顺利。多亏了wiringPi库,我什至通过SPI进行了一些传输。然后我想在我的应用程序中添加一些 GUI,例如,可以通过单击屏幕上的按钮进行一些传输。
IntelliSense 提示我,事实上,工具集中存在 gtk-3.0 库。似乎在每个连接上都从目标设备复制库,我在我的 Raspberry 上安装了 gtk。所以我在这个 Blink 示例中添加了一个简单的行:
#include <gtk-3.0/gtk/gtk.h>
在编译尝试时,当然有将近 4k 的错误。好吧,说得够多了,通过一点提示from this old tutorial 和一些反复试验,我设法在调试/项目属性/配置属性/VC++ 目录/头文件目录下添加了这组链接:
一切都朝着有希望的方向发展,因为错误数量从 4k 减少到只有 1 个:
gtk-3.0\gtk\gtk.h: No such file or directory
不管这个文件实际上是在这个位置:
无论上述配置中的链接组合和使用语句组合,编译器(?)都找不到这个该死的文件。
请停下来
编辑
我刚刚确认,目标配置确实有问题。这是好是坏,取决于观点。很好,因为 VS 设置可能一切都很好。不好,因为我对在Linux下编译东西一无所知。
在目标 (Raspberry Pi 3B) 上,所有编译成分都由 Linux 开发插件复制。所以在终端我执行了一行:
g++ main.cpp -o Blink2onRPi
得到了
main.cpp:4:21: fatal error: gtk/gtk.h: no such file or directory
现在,我将目标 RPi 上 main.cpp 中的包含行更改为:
#include <gtk-3.0/gtk/gtk.h>
现在它不见了<gdk/gdk.h>!在主机 Windows 设备上进行此更改时 - 结果相同,但在 VS 中。
当我在 VS 中处理类似问题时,在为 IntelliSense 设置链接时(现在显然它们是为此目的),现在可能必须在 Raspbian 上的某个地方设置类似的依赖项。但是在哪里?
编辑2
执行时:
g++ main.cpp -o Blink2onRPi `pkg-config --cflags --libs gtk+-3.0`
在目标 RPi 上没有更多与 GTK 相关的错误,只是wiringPi(也存在于项目中)未定义的引用。它提出了两个可能的问题:
1) 如何在 RPi 上设置wiringPi,以便可以在目标上手动编译项目和
2) 如何/在何处将上述行添加到 Visual Studio,使其远程执行,并在目标上正确添加所有 GTK 依赖项
研究股票目前的wiringPi库(因为这是用于交叉编译Linux开发的Blink led示例)我发现,在Project Properties/Linker/Input/Library Dependencies中有一个神秘的条目:
wiringPi
仅此而已,仅此而已。删除此条目后,编译时会在目标上弹出与以前相同的错误(显然缺少正确的 WiringPi 设置)-未定义的引用(未提及任何丢失的标头)。这可能与案件有关吗?如果是这样,我怎么能在那里添加这样的条目来处理缺少的 GTK 依赖项?
【问题讨论】:
-
请决定是否要在目标上进行交叉编译或开发。你不能两者都做。
-
@liberforce 正如我在您的答案下方评论的那样,我在 RPi 上进行了编译只是为了确定它的构建配置实际上是无效的。 I have found here in comment of user Stefan and following 他们过去处理过类似的问题,但描述对我来说太神秘了
-
好的,我现在对情况有了更好的理解。该 Linux 开发插件只是复制和构建在目标上,进行远程构建,而不是使用 VC 编译器进行交叉构建。这使整个事情变得过于复杂,pkg-config 只是为了解决该问题并为您获取依赖项。
-
该注释暗示您应该能够在编译器和链接器选项中使用 pkg-config,并且不必手动设置包含目录。
-
这个答案 stackoverflow.com/questions/45570103/g-cant-link-curl-lib-files/… 解释了如何将
pkg-config与 VSLinux 一起使用。 VS 不会为你添加第三方库到 Linux 目标,你必须单独设置它们,见stackoverflow.com/questions/43552526/…。
标签: c linux visual-studio gtk raspberry-pi3