【问题标题】:C++ shift from Unix to Visual Studio in WindowsC++ 在 Windows 中从 Unix 转移到 Visual Studio
【发布时间】:2011-03-21 10:52:48
【问题描述】:

我是一家软件公司的专业人士。在我过去的公司中,我基本上是在 unix 上从事 C 和 C++ 工作。现在我突然转向 Windows 上的 C++,我觉得我在一个完全不同的世界。基本上我我正在开发一个完全用 C++ 编写的非常大的应用程序。为了简单起见,我没有源代码。我有应用程序的 exe 和其他几个依赖文件。它是一个 GUI 应用程序(几个窗口,报告,图表和大量的数学计算是由这个应用程序完成的)。现在我终于有了应用程序的源代码,其中包括一些头文件、一些 vcproj 文件、一些 dsw 文件和其他几个我什至不明白为什么它们会出现的东西。 现在,作为我的 C++ 程序员,我的责任是让客户识别的所有错误都复制并修复它们。

如果它是 unix 上的错误,我可以简单地使用二进制文件和源代码并运行 gdb/dbx 并以某种或其他方式找出问题,例如添加一些 printf 语句。

但是考虑到我上面提到的文件。如何在 VISUAL STUDIO 中开始调试 VC++ 中的应用程序。 C++ 程序员从 Unix 转移到 Windows 是否非常困难。 有什么好的资源可以参考这种变化,让我可以快速掌握事情吗?

鉴于应用程序的 exe 和源代码,我如何通过在 VS C++ 中运行应用程序来开始调试程序-(顺便说一句,我使用的是 VS 2005)

【问题讨论】:

    标签: c++ visual-studio visual-c++ visual-studio-2005


    【解决方案1】:

    使用调试信息编译代码并按 f5(开始调试)。我看不出问题出在哪里。在 linux 上是一样的。

    【讨论】:

      【解决方案2】:

      我理解你的痛苦;几个月前我也走上了同样的路。

      您可能已经明白了,但 Visual Studio 并不是 gcc/g++ 的确切替代品。它嵌入了文本编辑器、调试器等。

      通常,您有两种编译“模式”,debugrelease。 (您可以添加自己的)

      debug模式下,所有优化都被禁用,您可以在调试器中执行您的程序,逐步使用,添加断点,...

      只需使用F5 键启动它。

      关于附加文件的更多说明:

      在 Visual Studio 世界中,.vcproj 文件代表“项目”:属于同一项目的一堆文件(源文件、头文件、资源...)。

      .dsw(我相信当前.sln 文件的旧名称)是一个“解决方案”文件:一组可以具有内部依赖关系的一个或多个项目。示例:您可以在同一个解决方案中拥有一个库和一个依赖于它的软件。这样当你编译整个解决方案时,事情就会按照正确的顺序构建。

      【讨论】:

      • 调试/发布配置与能否调试代码没有直接关系。您可以调试发布构建的代码 - 但显然,如果它经过高度优化,调试可能会有点跳跃(这是一个普遍的事实,而不是 VS 的事情)。发布版本可能会或可能不会设置为生成完整的符号文件(.PDB 文件),但可以为发布版本启用,而不会显着改变可执行文件的大小。
      【解决方案3】:

      您应该尝试的第一件事是在进程运行时附加到进程(Ctr-Alt-P 并选择进程)如果你有.pdb(调试信息)文件,你应该能够在不重新构建的情况下调试进程。

      如果失败,请尝试取消选中 工具 -> 选项 -> 调试中的“要求源文件与原始版本完全匹配”选项。

      如果这也失败了,您将不得不再次构建应用程序(通过打开 .sln 文件并执行构建),以便二进制文件与您的源文件匹配。

      祝你好运。

      【讨论】:

        【解决方案4】:

        主要区别在于,在 Unix 上,您将拥有 Makefile,而在 Windows 上找不到。 Visual Studio 在项目和解决方案中组织您的代码,这些项目文件包含 VS 编译和链接您的项目所需的所有信息。

        如果你有一个 *.sln 文件,只需双击它在 VS 中打开它。然后构建源代码(通常按 F6)并在调试模式下运行(通常是 F5)。

        更多详情: 项目是生成“某物”的源文件的集合,通常是 LIB、DLL 或 EXE。

        解决方案是项目的集合。有用的时候例如一个项目创建一个供另一个项目使用的 LIB。当您设置项目之间的依赖关系时,VS 会以正确的顺序构建项目。

        使用的扩展:

        • *.vcproj : C/C++ 源的项目文件
        • *.vcproj..user :包含在 GUI 中打开的窗口。 可以安全删除。

        • *.sln : 解决方案文件

        • *.ncb :用于解决方案的 Intellisense 数据库。可以安全删除。
        • *.suo :包含在 GUI 中打开的窗口。可以安全删除。

        • *.dsw : Visual Studio 6.0 相关文件 - 未在 VS2005 中使用。 (替换为 *.sln IIRC)

        • ./Debug/* : 包含所有文件夹 调试构建的中间文件 (可以更改)

        • ./Release/* : 包含所有文件夹 发布的中间文件 构建(可以更改)

        目前我能想到的就这些了。

        【讨论】:

          【解决方案5】:

          VS2005可以帮你把dsw文件转换成sln文件,但是你需要VC6的所有原始文件才能成功转换。如需调试,请查看以下 msdn 链接,希望对您有所帮助。

          http://msdn.microsoft.com/en-us/library/sc65sadd.aspx 请选择特定于 C++ 的超链接“调试本机代码”。

          【讨论】:

            【解决方案6】:

            如果您只有一个 .DSW 文件而不是一个 .SLN 文件,那么这意味着该项目可能是最后一次使用 VC6 而不是更高的 Visual Studio 版本之一。

            很遗憾,因为自 VC6 以来 C++ 编译器发生了很多变化,而且您可能会发现该项目无法使用 VS2005 编译,而无需对源代码进行一些细微的更改。

            您是否有 .SLN 文件 - 如果有,文件顶部的版本号是多少(它是一个文本文件)?如果你没有.SLN 文件,你能弄到VC6 吗?

            在尝试将其带到更高版本之前,我总是会尝试使用最佳匹配工具在不熟悉的平台上运行。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2017-03-09
              • 2017-04-12
              • 2011-04-15
              • 1970-01-01
              • 2021-12-21
              • 1970-01-01
              • 2014-09-19
              • 1970-01-01
              相关资源
              最近更新 更多