none
在一次debug出问题后,Visual C++ 2010完全不能编译我的工程了 RRS feed

  • 问题

  • 环境:
    Visual studio 2010 with sp1
    MFC 工程
    Win7 64 bit

    问题1. Debug出的问题,这个导致了问题2的编译问题:
    工程当时配置为Debug Win32,原来一直是“Use MFC in shared dll, /MDd”,调试没问题,出问题的那次,我把它改成了"Use MFC in static library, /MTd"(配置还是Debug Win32。不能肯定问题是这个导致的)。然后按F5调试,然后我的程序一直挂起,VS停在"loading symbols for dlap32.?(记得个大概)",并且VS也无响应。10多分钟后,我强制重启了windows。

    问题2. 问题1重启后,发生了个严重的问题,这个工程无法编译了。
    如果执行Clean,报错: "Microsoft.CppClean.targets(74,5): warning : Access to the path '<my output file path>' is denied. "
    如果执行build/rebuild,报错: "LINK : fatal error LNK1104: cannot open file '<my output file path>' ".  但实际上exe生成了,但大小不对,并且如果运行它的话,报错:"windows can't access the specified drive, path file ......."。但要生成的程序并没有被别的进程占用,我甚至可以在资源管理器里把它删除,但就算删除了,执行clean/build/rebuild,也报一样的错。
    我试过删除 .sbf, .aps, .suo, ipch, 都没用。
    别的工程没问题。

    现在问题1并不那么紧要,问题2则是火烧眉毛,已经被耽误三天了,请问好心的大侠们有什么好办法吗?重装VS和重新创建工程的方法放在最后吧,毕竟这个工程已经6年多了,除此外有什么办法没有?

    2014年8月11日 2:59

答案

  • 你好:

           http://social.msdn.microsoft.com/Forums/en-US/60f2ebf8-5845-4bea-b613-511e5afff339/visual-c-2010-entirely-cant-build-my-project-after-an-incident?foru

           因为你的帖子在论坛里重复发布了,所以不好意思我删了英文帖,我会在这个中文贴里为你解答。

           通过你的描述,我认为你的问题很可能是因为你的改为使用MFC静态链接库的问题。首先需要确认你的VS没有损坏且MFC dll是可用的,你可以新建两个工程一个用Use MFC in shared dll, /MDd,另一个用Use MFC in static library, /MTd,看看运行是否成功。

           如果你的VS没有问题的话,而且你真的想要使用静态链接库,我建议你重新使用use MFC in static library 来创建你的工程。创建新的工程的时候请注意备份好你原来项目的所有源文件或代码,以防万一,然后再导入新工程就好了。其中我认为当我们新建一个工程的时候,我们选择选项(shared static)都会生成相应的代码,只是MFC封装起来了看不到。如果在build项目之后直接修改这个选项的话,可能因为使用的方法,调用的方式之类的操作导致不可预计的错误,从而导致你的项目生成的exe没能将lib里面的代码一起编译出来,打开不了你的exe文件。所以很难直接恢复你的项目。以上是我的看法,你可以参考一下。

           有什么问题你可以继续在论坛里提问,我很高兴为你解答。

    Shu Hu

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 Shu 2017 2014年8月14日 4:23
    2014年8月12日 6:55
  •     我后来甚至重新建了一个同名的工程,工程里只有向导生成的代码,不过设置为相同的output path(..\bin\myproject.exe),编译时还是产生同样的错误。

        不过在此之后,我又重启了一次windows(之前至少重启过一次),然后问题竟然消失了。我只能说很灵异了。

        不管怎么样,谢谢Shu花在这个问题上的时间。

    • 已标记为答案 Shu 2017 2014年8月14日 4:23
    2014年8月14日 2:12

全部回复

  • 你好:

           http://social.msdn.microsoft.com/Forums/en-US/60f2ebf8-5845-4bea-b613-511e5afff339/visual-c-2010-entirely-cant-build-my-project-after-an-incident?foru

           因为你的帖子在论坛里重复发布了,所以不好意思我删了英文帖,我会在这个中文贴里为你解答。

           通过你的描述,我认为你的问题很可能是因为你的改为使用MFC静态链接库的问题。首先需要确认你的VS没有损坏且MFC dll是可用的,你可以新建两个工程一个用Use MFC in shared dll, /MDd,另一个用Use MFC in static library, /MTd,看看运行是否成功。

           如果你的VS没有问题的话,而且你真的想要使用静态链接库,我建议你重新使用use MFC in static library 来创建你的工程。创建新的工程的时候请注意备份好你原来项目的所有源文件或代码,以防万一,然后再导入新工程就好了。其中我认为当我们新建一个工程的时候,我们选择选项(shared static)都会生成相应的代码,只是MFC封装起来了看不到。如果在build项目之后直接修改这个选项的话,可能因为使用的方法,调用的方式之类的操作导致不可预计的错误,从而导致你的项目生成的exe没能将lib里面的代码一起编译出来,打开不了你的exe文件。所以很难直接恢复你的项目。以上是我的看法,你可以参考一下。

           有什么问题你可以继续在论坛里提问,我很高兴为你解答。

    Shu Hu

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 Shu 2017 2014年8月14日 4:23
    2014年8月12日 6:55
  •     我后来甚至重新建了一个同名的工程,工程里只有向导生成的代码,不过设置为相同的output path(..\bin\myproject.exe),编译时还是产生同样的错误。

        不过在此之后,我又重启了一次windows(之前至少重启过一次),然后问题竟然消失了。我只能说很灵异了。

        不管怎么样,谢谢Shu花在这个问题上的时间。

    • 已标记为答案 Shu 2017 2014年8月14日 4:23
    2014年8月14日 2:12