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=”。

  • 相关阅读:
    TCP通过哪些措施,保证传输可靠
    http协议---简述
    单播、广播、组播、多播
    axios 设置超时时间 timeout
    axios 处理并发请求
    vue 模板语法
    vue keep-alive
    v-if 条件渲染分组
    debounce 防抖动函数
    vue scoped 深度作用选择器
  • 原文地址:https://www.cnblogs.com/zealsoft/p/1279652.html
Copyright © 2011-2022 走看看