none
将VC6工程转到VS2008上出现的编译问题,谢谢帮忙解决! RRS feed

  • 问题

  • 我将以前的VC6工程转到VS2008上,可是在编译的时候出现以下编译错误:

     

    1>正在编译...
    1>StdAfx.cpp
    1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxcomctl32.h(295) : error C2059: 语法错误 : “__stdcall”
    1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxcomctl32.h(295) : error C2091: 函数返回函数
    1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxcomctl32.h(295) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

     

    可以看出,是在编译StdAfx.cpp时出错的,但是该文件只包含了stdafx.h,所以我以为这个头文件链接到了以前的一些库文件,我用VS2008自身生成的stdafx.h文件替换以前工程的这个文件,但是这个问题还是没有排除,各位大虾帮忙一下,谢谢!

    2008年10月29日 9:49

答案

全部回复

  • http://msdn.microsoft.com/zh-cn/library/ms177253.aspx提到了由于编译器更改可能导致的C4430错误

    2008年10月30日 4:46
    版主
  • 你好!
       C4430错误是由于编译器的改变造成的,
    对 Visual C++ 2005 执行的编译器一致性工作可能导致此错误:所有声明现在必须显式指定类型;不再假定为 int。
    2008年10月30日 6:32
    版主
  • 你好,谢谢回复!

    错误的信息可以看出是来自mfc自身的头文件中,其中的一条错误信息如下所示:

    c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxcomctl32.h(295) : error C2059: 语法错误 : “__stdcall”

     

    编译的时候,事实上出现的错误有141个,而且都是类似的错误,都是指向afxcomctl32.h这个文件,所以我觉得不应该是编译器的错误,而是程序在配置上的问题。

    我用VC6建了一个基于对话框的程序,在VC2008中打开、编译、运行却没有问题。证明程序安装是没有问题的。我对比了配置却也没有发现任何不同,真是百思不得其解!

    2008年10月31日 2:59
  • 在微软英文论坛上找到了貌似这个问题的解:

     

    reply:

    I have seen there errors before and the usual reason is that there problem with your include path - you are mixing header files from different sources (maybe an older PSDK?). You should add /showIncludes to the compiler command-line and check that you are indeed getting all your header files from a consistent set of locations.

     

    author:

     

    Yeah, in fact, that's what I've been thinking, but I've been having a devil of a time trying to figure it out by pulling apart the headers. I might reinstall my PSDK, then rerun the builds, and see what happens.

    Thanx.

     

    I reinstalled my PSDK include directory and VIOLA!!!!

    Obviously, it somehow had become corrupt. Thanks, Jonathan, for getting me pointed in the right direction! (the PSDK headers).

     

    谁能把这个问题说的透彻些呢?谢谢!

     

     

    2008年10月31日 3:44
  • 问题解决!原因是以前的include文件夹中有了旧的MFC头文件,但是头文件混乱所致!

    2008年11月1日 9:38