• Visual C++ 2010 Express下使用WTL


    下载WTL和VCX2010之类就不再赘述了,假设已经VCX2010已经安装,WTL已经解压好,以下都以TabBrowser例子来说明。

    因为WTL是基于ATL的,而免费的VCX2010并不包括ATL,所以第一个问题就是如何获取最新且合法的ATL代码,注意是“合法的”,类似这篇帖子里面的方法还是不要考虑了,至于用老旧的Platform SDK的方法,当然也不考虑,因为不是最新的,要同时满足上面两个条件,最好的方法就是去下载最新的WDK,在WDK里面包含了atl71,安装好就ok了。

    编译例子会碰到提示

    1. fatal error C1083: 无法打开包括文件:“atlbase.h”: No such file or directory

    很好办,添加atl71的路径到附加包含目录就行了

    2. error C2065: “_stdcallthunk”: 未声明的标识符
        error C2070: “'unknown-type'”: 非法的 sizeof 操作数
    因为新ATL库修改了_stdcallthunk的定义位置,所以要把atlstdthunk.h包含进来,像这样:


    #include <atlbase.h>
    #include <atlstdthunk.h>

    3. fatal error C1083: 无法打开包括文件:“atlapp.h”: No such file or directory

    没什么好说的,继续包含WTL的头文件进来。

    4. fatal error RC1015: cannot open include file 'atlres.h'.

    这个问题倒是头次遇到,连资源头文件也要包含进来,项目属性->资源->常规->附件包含目录。

    最后再添加库文件的目录到附件库目录就OK了,32位系统当然是选\lib\ATL\i386,编译OK。

    等等,还有这一堆警告怎么办?

    1>------ 已启动生成: 项目: TabBrowser, 配置: Debug Win32 ------
    1>atlsd.lib(atlcommodule.obj) : warning LNK4078: 找到多个“ATL”节,它们具有不同的特性(40301040)
    1>stdafx.obj : warning LNK4254: 节“ATL”(50000040)合并到具有不同特性的“.rdata”(40000040)
    1>TabBrowser.obj : warning LNK4254: 节“ATL”(50000040)合并到具有不同特性的“.rdata”(40000040)
    1>atlsd.lib(externs.obj) : warning LNK4254: 节“ATL”(50000040)合并到具有不同特性的“.rdata”(40000040)
    1>atlsd.lib(atldebugapi.obj) : warning LNK4254: 节“ATL”(50000040)合并到具有不同特性的“.rdata”(40000040)
    1>atlsd.lib(atltrace.obj) : warning LNK4254: 节“ATL”(50000040)合并到具有不同特性的“.rdata”(40000040)
    1>atlsd.lib(atlbase.obj) : warning LNK4254: 节“ATL”(50000040)合并到具有不同特性的“.rdata”(40000040)
    1>atlsd.lib(atlcommodule.obj) : warning LNK4254: 节“ATL”(50000040)合并到具有不同特性的“.rdata”(40000040)
    1>atlsd.lib(atlfuncs.obj) : warning LNK4254: 节“ATL”(50000040)合并到具有不同特性的“.rdata”(40000040)
    1>atlsd.lib(stdafx.obj) : warning LNK4254: 节“ATL”(50000040)合并到具有不同特性的“.rdata”(40000040)
    1>atlsd.lib(allocate.obj) : warning LNK4254: 节“ATL”(50000040)合并到具有不同特性的“.rdata”(40000040)
    1>atlsd.lib(atltracemodulemanager.obj) : warning LNK4254: 节“ATL”(50000040)合并到具有不同特性的“.rdata”(40000040)

    充耳不闻不是好态度,原因是因为VCX2010默认不使用ATL,把项目属性->常规->ATL的使用改掉就好,静态还是动态就看实际需要了。

    好了,整个世界清净了,打完收工,谢谢观看。

  • 相关阅读:
    【Canal源码分析】Canal Instance启动和停止
    【Canal源码分析】Canal Server的启动和停止过程
    【Canal源码分析】parser工作过程
    【源码分析】Canal之Binlog的寻找过程
    otter代码在IDEA远程DEBUG方法
    【源码】otter工程结构
    一个Java程序员的2018年展望与2017年总结
    【源码解析】Sharding-Jdbc的执行过程(一)
    IntelliJ IDEA 调试 Apache RocketMQ 源码
    [源码分析]HashSet 和LinkedHashSet
  • 原文地址:https://www.cnblogs.com/s5689412/p/2025151.html
Copyright © 2020-2023  润新知