代码之家  ›  专栏  ›  技术社区  ›  Vijay

Windows中从UNIX到VisualStudio的C++转换

  •  2
  • Vijay  · 技术社区  · 15 年前

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

    如果这是unix上的一个bug,我可以简单地使用二进制和源代码并运行gdb/dbx,然后通过添加一些printf语句之类的方式找出问题所在。

    但是考虑到上面提到的文件,我如何在visual studio中用vc++调试应用程序呢? C++程序员很难从unix转到Windows。 有没有什么好的资源,我可以参考这种变化,我可以迅速掌握的东西?

    给定应用程序的EXE和源代码,我如何通过运行VS C++中的应用程序来调试程序(BTW,我使用VS 2005)

    6 回复  |  直到 15 年前
        1
  •  4
  •   Sjoerd    15 年前

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

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

    更多细节: 项目是产生“某物”的源文件的集合,通常是lib、dll或exe。

    解决方案是项目的集合。当一个项目创建一个lib供另一个项目使用时很有用。当您设置项目之间的依赖关系时,vs将按照正确的顺序构建项目。

    使用的扩展名:

    • *.VcProj:C/C++源项目文件
    • *.vcproj..user:包含在图形用户界面中打开的窗口。 可以安全删除。

    • *.sln:解决方案文件

    • *.ncb:解决方案的智能感知数据库。可以安全删除。
    • *.suo:包含在gui中打开的窗口。可以安全删除。

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

    • ./debug/*:包含所有 调试生成的中间文件 (可以更改)

    • ./release/*:包含所有 发布的中间文件 生成(可以更改)

    这就是我现在能想到的。

        2
  •  3
  •   Will Dean    15 年前

    如果您只有一个.dsw文件,而没有一个.sln文件,那么这意味着该项目可能是最后一次使用vc6而不是以后的visual studio版本。

    这是一个遗憾,因为自从VC6以来,C++编译器已经发生了很多变化,你可能会发现这个项目没有用VS2005编译,而不需要对源代码做一些微小的修改。

    你有一个.sln文件吗-如果有,文件顶部的版本号是多少(一个文本文件)?如果你没有一个.sln文件,你能找到vc6吗?

    我总是试图在一个陌生的平台上使用最好的匹配工具,然后再尝试将其提交到更高版本。

        3
  •  1
  •   ereOn    15 年前

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

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

    通常,有两种编译“模式”, 调试 释放 . (您可以自己添加)

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

    开始使用 F5 关键。

    有关其他文件的更多说明:

    在visual studio世界中, .vcproj 文件表示“项目”:属于同一项目的一组文件(源文件、头文件、资源…)。

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

        4
  •  1
  •   Motti    15 年前

    您应该尝试的第一件事是在进程运行时附加到它( CTR - 中高音 - 如果你有 .pdb (调试信息)文件您应该能够调试进程,而无需重新构建它。

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

    如果这也失败了,您将不得不重新构建应用程序(通过打开 .sln 使二进制文件与源文件匹配。

    祝你好运。

        5
  •  0
  •   Victor Marzo    15 年前

    使用调试信息编译代码,然后按F5键(开始调试)。我不知道问题在哪里。在Linux上也是一样的。

        6
  •  0
  •   user401519    15 年前

    VS2005可以将DSW文件转换为SLN文件,但您需要所有原始VC6文件才能成功转换。为了调试请查看下面的msdn链接,我希望这将有助于您。

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