【问题标题】:Cygwin in Visual StudioVisual Studio 中的 Cygwin
【发布时间】:2010-12-27 22:23:14
【问题描述】:

我正在尝试将我为课堂编写的旧程序从 Ubuntu 中的 KDev 移植到 Windows Visual Studio 2008,使用 Cygwin 作为个人学习练习。我将包含路径配置为包含 C:\cygwin\usr\include,但它无法正确读取 .h 文件。

也就是说,我很好奇如何在使用 Cygwin 的 Visual Studio 环境中使用 unix sockets.h 功能。有没有人做过这个工作或者有更简单的方法来做这个?

【问题讨论】:

  • 欢迎来到 Stack Overflow。首先,如果不正确,它如何 读取标题?请更准确。 (描述它做什么,而不是它不做什么。)其次,如何使用套接字与第一个问题无关,关于如何正确读取标题。请考虑将您的第二段移至一个新问题。通过这种方式,您将获得更好的答案(以及更多获得声望点的机会)。
  • 我不确定您尝试执行的操作是否有效。 Cygwin 头文件和库适用于使用 gcc 而不是 MSVC 编译。

标签: c++ visual-studio-2008 sockets cygwin


【解决方案1】:

这是一个老问题,但由于它首先出现在 Google 搜索中(对于 SO),我想分享一下,看起来最新的 Visual Studio 版本确实支持这一点。

有关说明,请参阅此博客文章: https://blogs.msdn.microsoft.com/vcblog/2017/07/19/using-mingw-and-cygwin-with-visual-cpp-and-open-folder/

【讨论】:

    【解决方案2】:

    简单地说,不要那样做。这只会浪费时间。我尝试了几次,但总是失败。大多数情况下,我对许多链接错误感到沮丧,并且无法将 VS 用作调试器。

    您可以使用 Visual Studio 来编辑和浏览源代码。这很好,因为 VS 提供了最好的 C/C++ 智能感知功能(例如,自动完成、快速转到定义/声明)。但是,在 Visual Studio 2008 中使用 cygwin 工具链非常困难。Visual Studio 2008 不适合与其他工具链一起使用。 具体来说,您需要更改 (1) 标题,(2)库,(3)编译器和(4)链接器。但是,这通常非常困难,或者您需要权衡 Visual Studio 的优秀功能。

    Visual Studio 最强大的特性是它的调试能力,例如完全集成的调试环境和非常简单的观察窗口(例如,您可以直接在观察窗口中看到 STL 向量的元素)。但是,如果您要更改基本工具链,则不能这样做(尽管我非常怀疑,甚至可以使用 Visual Studio 和 cygwin 工具链安全地构建)。

    很遗憾,当前的 Visual Studio 2008 不适用于 cygwin/MinGW。

    【讨论】:

      【解决方案3】:

      根据您的具体目标,有几种方法可以实现这一目标。最简单的方法可能只是创建一个 Visual Studio“makefile”项目,该项目触发自定义构建命令以运行您构建的 makefile。但这使您远离了 Visual Studio 作为 IDE 的许多好处,所以我猜这并不是您真正想要的。

      如果您想要一个更完全集成的解决方案,您需要做两件事。首先,您将需要更改所有包含/库路径以避免使用 Microsoft 的路径,而是使用 Cygwin 的路径。您可以通过从菜单中选择“工具->选项”,然后从出现的窗口左侧的树中选择“项目和解决方案-> VC++ 目录”来执行此操作。您可以选择更改可执行文件、标头、库等的搜索目录。对于您要执行的操作,我建议删除 everything 并仅添加 cygwin 目录。

      其次,您必须告诉 Visual Studio 使用 gcc/g++ 编译器。这有点棘手。 VS 支持自定义文件类型的自定义构建规则......但它似乎已经为 Microsoft 编译器硬连线了 C++。除了使用您自己的自定义文件扩展名之外,我真的不知道解决这个问题的好方法。您可以尝试标准的 .c(C 文件)和 .cc(C++ 文件)的 unix 扩展名,但我怀疑 Visual Studio 会自动选择这些扩展名。你可能不得不选择完全陌生的东西。

      如果您在解决方案资源管理器中右键单击您的项目并选择“自定义构建规则”,您将获得一个界面,让您可以为您选择的文件扩展名创建自定义构建规则。从那里开始,界面相对简单。

      这可能无法完全满足您的需求,但它可能与您使用 Visual Studio 获得的结果差不多。

      【讨论】:

      • 自定义扩展和构建规则在稍作调整后工作,我之前没有使用过自定义构建规则,所以我什至没有想到这一点。这不是一个完美的解决方案,也绝不是一种有效的做事方式,但这更多是作为一种学习体验来测试限制和发现新事物,而不是任何实际的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      • 2016-07-30
      • 1970-01-01
      • 2021-03-18
      相关资源
      最近更新 更多