zoukankan      html  css  js  c++  java
  • VC6工程转VC10可能会遇到的一些问题

    最近一个人把公司核心项目(基于MFC)从VC6转到了VC10(VC2010),遇到了很多的问题,这里把一些难搞定的问题简单说一下。

    • Error MIDL2025: syntax error : expecting a type specification near “ULONG_PTR”。这是一个比较难搞明白的问题,要看你对COM是否比较了解(?)。导致该问题的一个原因是你的工程中包含了一个从老旧版本的Windows SDK里拷贝过来的basetsd.h文件(该头文件不在%INCLUDE%中)。解决的办法就使用Windows SDK v7中的basetsd.h。
    • Error C2440: ‘static_cast’ : cannot convert from ‘void (__thiscall CSomeclass::*)(WPARAM,LPARAM)’ to ‘LRESULT (__thiscall CWnd::*)(WPARAM,LPARAM)’。修改你的消息响应函数的返回值类型为LRESULT。原因是VC6使用的是C风格的强制类型转换,而VC2010使用的是static_cast。
    • error C2663: ‘ATL:CSimpleStringT<BaseType>::GetBuffer’ : 2 overloads have no legal conversion for ‘this’ pointer。把GetBuffer改成GetString。
    • error LNK2019: unresolved external symbol xGetMonitorInfo@8 referenced in function….。移除头文件<multimon.h>。这个头文件已经用不到了。
    • time_t长度问题。VC10默认64位了而VC6是32位。你可能需要定义宏:_USE_32BIT_TIME_T。

    这些大概是比较花时间的,剩下的问题就主要是体力活了。比方说for语句的修改。另外就是,VC6的工程可能会因为某些原因而使用了IPTypes.h等头文件,但这些文件可能是从某个Windows(Platform) SDK中拷贝过来的。这也会导致编译期的一些问题。只要把这些头文件引用改成VS自带的就可以了。

  • 相关阅读:
    Java 标识符
    Java 关键字详解
    Java 语言的主要特性
    redis学习
    垃圾回收
    JVM内存结构
    sql总结(DML)
    sql总结(DDL)
    加密算法
    《数据结构》 定长顺序串常用操作代码集合
  • 原文地址:https://www.cnblogs.com/wpcockroach/p/2598453.html
Copyright © 2011-2022 走看看