zoukankan      html  css  js  c++  java
  • 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的使用改掉就好,静态还是动态就看实际需要了。

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

  • 相关阅读:
    MySQL数据库备份
    执行SDK的aapt报错./aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./aapt)
    ftp删除目录和文件,目录下有文件删除提示【550 Remove directory operation failed.】
    Spring mvc接收中文参数值乱码(tomcat配置问题)
    python3获得命令行输入的参数
    Java反射、动态加载(将java类名、方法、方法参数当做参数传递,执行方法)
    java定义object数组(可以存储String或int等多种类型)
    java方法中增加不固定参数
    ibatis和myBatis打印sql语句的log4j配置文件
    spring依赖注入之手工装配
  • 原文地址:https://www.cnblogs.com/s5689412/p/2025151.html
Copyright © 2011-2022 走看看