我安装了Visual Studio2008,但已有的工程是VC6做的。我用2008打开时,编译不了。

解决方案 »

  1.   

    Visual Studio2008 语法坚持更加严格了吧,你看看是什么地方有问题,就一个个去改了
      

  2.   

    我才接手,不会啊?
    错误信息是:
    BSCMAKE:error BK1506:无法打开文件“.\Debug\ClientSocket.sbr“:No such file or directory
      

  3.   

    正在编译...
    StdAfx.cpp
    c:\program files\microsoft sdks\windows\v6.0a\include\sdkddkver.h(217) : fatal error C1189: #error :  _WIN32_WINNT settings conflicts with _WIN32_IE setting这个错误怎么解决啊?
      

  4.   

    能说的具体点吗?那我应该怎么处理呢?是改设置还是装SDK?
      

  5.   

     首先可以直接用Visual Studio 2008的打开VC6的工作区文件和项目文件(dsw和dsp),并将其升级为VS2008的解决方案格式和项目格式(sln和vcproj),VC9的编译器相对于VC6有了很大的变化,一些编译参数和链接参数被废弃(比如/map:line),有一些改变了名称,还有新增的选项,不过不用担心,升级过程会自动对其进行转换,最终都会得到一个正确的解决方案和VC项目文件,这个过程不会遇到太多的麻烦,问题都出在随后的编译过程中,下面就将我在移植的过程中遇到的问题和我的解决方法总结一下,希望对还在用VC6维护代码的朋友有所帮助。
      一、_WIN32_WINNT 与 _WIN32_IE 设置冲突    _WIN32_WINNT 与 _WIN32_IE设置不兼容会导致如下C1189致命错误:StdAfx.cpp
    c:\program files\microsoft sdks\windows\v6.0a\include\sdkddkver.h(217) : fatal error C1189: #error :  _WIN32_WINNT settings conflicts with _WIN32_IE settingStdAfx.cpp通常是项目中第一个编译的文件,这个错误将导致编译无法继续进行。产生这个错误的原因是原因是_WIN32_WINNT的版本定义太老,老的VC代码对_WIN32_WINNT的典型设置是:#ifndef _WIN32_WINNT
    #define _WIN32_WINNT 0x0400
    #endif0x0400相对于VS2008所带的Plarform SDK(在文件sdkddkver.h中)中_WIN32_IE的定义来说太老了,导致不兼容,可以将其改成0x0501或更高的版本避免这个问题,如下所示:#ifndef _WIN32_WINNT
    #define _WIN32_WINNT 0x0501
    #endif也可以将这三行_WIN32_WINNT定义删除,这样就会使用Plarform SDK中的_WIN32_WINNT定义,自然就不存在不兼容问题了。不过出于对老版本VC的兼容考虑(毕竟以后可能还要使用VC6编译代码),最好这样修改:#if _MSC_VER <= 1200 // MFC 6.0 or earlier
        #ifndef _WIN32_WINNT
        #define _WIN32_WINNT 0x0400
        #endif
    #endif