zoukankan      html  css  js  c++  java
  • 运行Google CTemplate首页的例子遇到_CrtIsValidHeapPointer异常

    最近打算使用Google CTemplate作为模板引擎,但是运行其主页上的例子居然出现了错误。程序运行的结果正常,但是在退出时导致了_CrtIsValidHeapPointer异常,主要是释放string变量时出现了错误。搜索了一下Google CTemplate的讨论组,说如果编译库文件所使用的CRT版本和编译程序所使用的CRT版本不一致会导致这个问题。DLL库采用的CRT是多线程DLL方式的,所以应用程序也必须使用这个方式,这就需要在应用程序的工程选项中将CRT由默认的单线程方式改为多线程DLL方式。如下图所示。

    不过这有时不太方便,也可以把CTemplate所需要的文件直接加到工程中,好在文件不多:

    • src\base\arena.cc
    • src\htmlparser\htmlparser.cc
    • src\htmlparser\jsparser.cc
    • src\windows\port.cc
    • src\htmlparser\statemachine.cc
    • src\template.cc
    • src\template_dictionary.cc
    • src\template_from_string.cc
    • src\template_modifiers.cc
    • src\template_namelist.cc
    • src\template_pathops.cc

    记得在这些文件的编译属性中选择“不使用预编译头”,否则会出现编译错误。

     2008年8月31日:以上介绍的是0.90版本,在0.91版本中src\template_from_string.cc 文件不存在了。

     2008年9月15日:采用上面介绍的方法有个缺陷,就是会出现很多编译和链接的警告C4251和LNK4049、LNK4071。这主要是因为在CTemplate的代码中,定义了:

     

    Code

    所以需要在编译的命令行加上“/D CTEMPLATE_DLL_DECL=”。

  • 相关阅读:
    Flume基础(一):概述
    Hive高级(2):优化(2) 表的优化
    ospf命令
    Verizon 和某 BGP 优化器如何在今日大范围重创互联网
    BGP数据中心鉴别方法
    多线BGP鉴定
    mpls ldp neighbor 和loopbak
    ospf默认路由
    ospf
    ubuntu cloud init获取元数据失败
  • 原文地址:https://www.cnblogs.com/zealsoft/p/1279652.html
Copyright © 2011-2022 走看看