• VS2005迁移项目工程所带来问题


    我们项目开发过程中难免要迁移工程,如对工程重命名,或将一个或多个项目添加到一个解决方案中,如果迁移方法不正确,或设置问题,总会出一些编译问题,对熟悉大侠来说可谓驾轻就熟,但对像我一样的初学者来说就会无从下手了,所以也查阅了相关资料再加上个人亲身实验,谈谈操作的相关步骤及遇到问题的解决办法。

    一、重命名解决方案/项目步骤

    如将一个AAA项目重命名为BBB,一般是用sln解决方案文件打开工程的,打开后把项目AAA重命名为BBB,改后只是逻辑名改了,其物理名还是AAA.vcproj,修改成BBB.vcproj,用sln打开时会找不到该项目,有两个办法,(1)移除不可用项目,右键解决方案,添加->现有项目,选择BBB.vcproj即可,(2)用记事本直接打开sln,修改里的项目名,路径等,再用VS打开就可以了

    二、解决方案中添加多个项目

    这个其实很简单了,右键解决方案,添加->现有项目,选择相应的vcproj就可以了,需要重命名再参照上面的

    三、修改文件结构所带来预编译头问题及解决办法

    上面是以整个项目做为迁移的,操作也很简单,相信有点点动手能力的人,自己早就搞会了,我就是有点画蛇添足了。可是如果要以单个文件迁移,修改文件的结构,特别是修改预编译文件(一般是stdafx.h和stdafx.cpp),就会出现预编译错误,一般为如下三个:

    1、“fatal error C1083: 无法打开预编译头文件:“Debug/DSMS.pch”: No such file or directory”

    2、error C2859: ..../vc80.pdb 不是创建此预编译头时使用的 pdb 文件,请重新创建预编译头。

    error C2859: ...../vc80.idb 不是创建此预编译头时使用的 idb 文件,请重新创建预编译头。

    3、error LNK2001: 无法解析的外部符号 "int __cdecl _AfxInitManaged(void)" (?_AfxInitManaged@@YAHXZ)

    先来说一说解决办法,这三个错误可以用一个办法解决,右键你项目的预编译文件(stdafx.cpp)――>属性――>配置属性――>C/C++――>预编译头――>创建/使用预编译头选择创建预编译头->重新生成,解决。在选stdafx.cpp属性时,其实每一个文件都有自己的属性的,整个项目有属性(菜单->项目->属性),来管理所有文件,这个我也是后来才知道的(不要笑我啦),其它CPP都是“使用预编译头”,新添加的文件,项目默认设置成“使用预编译头”,所以当修改文件结构时,手动添加stdafx.cpp时就会出现上面的错误。

    下面我们来人为的制造这三个错误,借此来说明原因。

    新建一个MFC项目,修改stdafx.cpp为“使用预编译头”,删掉项目的Debug文件夹,生成就会出现第一个错误。

    新建一个MFC项目,生成,修改stdafx.cpp为“使用预编译头”,用菜单中的“清理项目”清理,重新生成就会出现第两个错误。

    新建一个MFC项目,生成,修改stdafx.cpp为“使用预编译头”,重新生成就会出现第三个错误。

    原因其实已经很明显了,只说说第三个错误,是一个链接错误mfcs80ud.lib(stdafx.obj) : error LNK2001,我猜想是当stdafx.cpp为“创建预编译头”时就obj不会再去链接_AfxInitManaged(void)了,关于_AfxInitManaged(void)是什么也不得而知了,请高手赐教。

    四、VS2005空项目变MFC项目步骤

    1、项目->属性->配置属性->常规->MFC的使用中改成“在共享 DLL 中使用 MFC”

    2、项目->属性->配置属性->常规->字符集中改成“使用 Unicode 字符集”

    3、项目->属性->配置属性->链接器->高级->入口点填写“wWinMainCRTStartup”

    以上设置MFC程序可以成功编译,不知道还有没其它设置,如果通过空项目改成的,程序不能调试,还要设置相关选项生成调试信息。

    VS2005调试时出现无法找到调试信息解决方案

    首先打开菜单项目->项目属性页

    1。选择配置属性->链接器->调试->生成调试信息改为 是

    2。选择配置属性->C/C++ ->常规->调试信息格式 改为用于“编辑并继续”的程序数据库(/ZI)

    3。选择配置属性->C/C++ ->优化->优化改为 自定义

    重新编译,运行。

  • 相关阅读:
    基于jquery的web在线流程图设计器gooFlow
    angularJS学习笔记二
    angularJS学习笔记一
    JavaScript作用域链详解
    图片查看器(可拖拽,缩放,轮播)
    小议window.event || ev
    Vue安装准备工作
    让VS2013添加新类时自动添加public关键字
    win10太垃圾,真的不好用。
    Bind 和 ScaffoldColumn[转]
  • 原文地址:https://www.cnblogs.com/gghost/p/3256950.html
Copyright © 2020-2023  润新知