专栏首页跟Qt君学编程解决ptlib库ptlib_config.h不存在的问题

解决ptlib库ptlib_config.h不存在的问题

解决ptlib_config.h编译不存在的问题,以及使用ptlib库的编译错误。

以下为编译ptlib2.19输出信息

1>------ 已启动全部重新生成: 项目: PTLib Static, 配置: Debug Win32 ------1>Using default getdate bison file.1>已复制         1 个文件。1>Configuring Build Options1>PTLib Configure 1.26 - opened configure.ac1>Predefine variable "ac_top_build_prefix" as "D:\Document\workspace\ptlib\src\ptlib\msos\../../../Lib/Win32/"1>Could not open ptlib.pc1>Could not open ptlib_cfg.dxy1>Written make/ptlib_config.mak1>Written D:\Document\workspace\ptlib\src\ptlib\msos\../../../Lib/Win32/include/ptlib_config.h1>Configuration completed.1>Updating revision include file....1>Console_2017.vcxproj -> D:\Document\workspace\ptlib\src\ptlib\msos\..\..\..\lib\ptlibsd.lib2>------ 已启动全部重新生成: 项目: PTLib DLL, 配置: Debug Win32 ------2>Merging symbols ...2>MergeSym version 1.12.1 on Windows 10 by Equivalence2>2>Symbols merged: 1909 added, 0 removed, 16530 total.2>dllmain.cxx2>  正在创建库 D:\Document\workspace\ptlib\src\ptlib\msos\..\..\..\lib\ptlibd.lib 和对象 D:\Document\workspace\ptlib\src\ptlib\msos\..\..\..\lib\ptlibd.exp2>PTLib_2017.vcxproj -> D:\Document\workspace\ptlib\src\ptlib\msos\..\..\..\lib\ptlibd.dll3>------ 已启动全部重新生成: 项目: Hello World DLL, 配置: Debug Win32 ------3>hello.cxx3>helloDLL_2017.vcxproj -> D:\Document\workspace\ptlib\samples\hello_world\..\..\bin\Hello World DLL\Win32\Debug\Hello World DLL.exe========== 全部重新生成: 成功 3 个,失败 0 个,跳过 0 个 ==========

使用ptlib库编译程序出错信息

include\ptlib\atomic.h(150): warning C4804: “-”: 在操作中使用类型“bool”不安全include\ptlib\atomic.h(155): error C3861: “_InterlockedAdd”: 找不到标识符include\ptlib\atomic.h(156): error C3861: “_InterlockedAdd”: 找不到标识符include\ptlib\atomic.h(156): warning C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型include\ptlib\atomic.h(157): error C3861: “_InterlockedAdd”: 找不到标识符include\ptlib\atomic.h(158): error C3861: “_InterlockedAdd”: 找不到标识符include\ptlib\atomic.h(158): warning C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型include\ptlib\atomic.h(159): error C3861: “_InterlockedAdd64”: 找不到标识符include\ptlib\atomic.h(159): error C3861: “_InterlockedExchange64”: 找不到标识符include\ptlib\atomic.h(159): error C3861: “_InterlockedExchangeAdd64”: 找不到标识符include\ptlib\atomic.h(160): error C3861: “_InterlockedAdd64”: 找不到标识符include\ptlib\atomic.h(160): error C3861: “_InterlockedExchange64”: 找不到标识符include\ptlib\atomic.h(160): error C3861: “_InterlockedExchangeAdd64”: 找不到标识符include\ptlib\atomic.h(160): warning C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型include\ptlib/pstring.h(1947): error C2504: “PWCharArray”: 未定义基类include\ptlib/pstring.h(1954): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 intinclude\ptlib/pstring.h(1954): error C2143: 语法错误: 缺少“,”(在“&”的前面)include\ptlib/pstring.h(1948): error C2664: “PObject::Comparison PObject::InternalCompareObjectMemoryDirect(const PObject *,const PObject *,int)”: 无法将参数 1 从“const PWideString *”转换为“const PObject *”include\ptlib/pstring.h(1948): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换include\ptlib/pstring.h(1954): error C2065: “arr”: 未声明的标识符include\ptlib/pstring.h(1954): error C2614: “PWideString”: 非法的成员初始化:“PWCharArray”不是基或成员include\ptlib/pstring.h(1955): error C2039: “AsUCS2”: 不是“PString”的成员include\ptlib/pstring.h(110): note: 参见“PString”的声明include\ptlib/pstring.h(1955): error C2614: “PWideString”: 非法的成员初始化:“PWCharArray”不是基或成员include\ptlib/pstring.h(1957): error C2653: “PWCharArray”: 不是类或命名空间名称include\ptlib/pstring.h(1958): error C2653: “PWCharArray”: 不是类或命名空间名称include\ptlib/pstring.h(1958): error C2039: “AsUCS2”: 不是“PString”的成员include\ptlib/pstring.h(110): note: 参见“PString”的声明include\ptlib/pstring.h(1961): error C2440: “<function-style-cast>”: 无法从“const PWideString”转换为“PString”include\ptlib/pstring.h(1961): note: 无构造函数可以接受源类型,或构造函数重载决策不明确include\ptlib/pstring.h(1963): error C3861: “GetSize”: 找不到标识符include\ptlib/pstring.h(1966): error C2614: “PWideString”: 非法的成员初始化:“PWCharArray”不是基或成员include\ptlib/pstring.h(2156): error C2039: “AsUCS2”: 不是“PConstantString<PString>”的成员include\ptlib/pstring.h(2148): note: 参见“PConstantString<PString>”的声明include\ptlib/pstring.h(2156): error C2614: “PWideString”: 非法的成员初始化:“PWCharArray”不是基或成员include\ptlib/pstring.h(2157): error C2653: “PWCharArray”: 不是类或命名空间名称include\ptlib/pstring.h(2157): error C2039: “AsUCS2”: 不是“PConstantString<PString>”的成员include\ptlib/pstring.h(2148): note: 参见“PConstantString<PString>”的声明include\ptlib/pstring.h(2158): error C2653: “PWCharArray”: 不是类或命名空间名称include\ptlib/pstring.h(2158): error C2039: “AsUCS2”: 不是“PConstantString<PString>”的成员include\ptlib/pstring.h(2148): note: 参见“PConstantString<PString>”的声明

解决问题

  • 编译ptlib会根据系统编译器产生新的ptlib_config.h文件;
Written D:\Document\workspace\ptlib\src\ptlib\msos\../../../Lib/Win32/include/ptlib_config.h
  • 一般路径为:
ptlib\lib\Win32\include\ptlib_config.h
  • 需要注意的是不可直接修改 ptlib_config.h.in文件,不然会可能导致以上的编译出错信息。
ptlib\include\ptlib_config.h.in

本文分享自微信公众号 - Qt君(qtjuna),作者:Prosa

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Qml失焦问题

    Qt君
  • Qt官方示例-数字时钟

    DigitalClock继承于QLCDNumber,并实现一个槽函数showTime()用来定时更新时钟显示:

    Qt君
  • Qt开源网络库[6]-超时功能

    Qt君
  • 实现iOS图片等资源文件的热更新化(四): 一个最小化的补丁更新逻辑

    简介 ? 以前写过一个补丁更新的文章,此处会做一个更精简的最小化实现,以便于集成.为了使逻辑具有通用性,将剥离对AFNetworking和ReativeCoco...

    ios122
  • Java中的反射总结

    刚开始学习Java的时候真的很难理解反射到底是个什么东西 一些书籍,哪怕是很经典的书籍都解释的让人感觉懵懵的,或许的确是我太笨 况且,网上说在将来学习框架的时...

    顶级程序员
  • 如何写一个自己的安卓应用?

    现在智能手机占据了大部分人的大部分生活。公交车,地铁,路边,处处都能看到低头族。就连大一军训都能看到拿着手机不放的。 为什么出现这种现象?手机应用,现在的移动应...

    程序员互动联盟
  • SpringCloud之入门到跑路系列(一) - 服务注册、负载均衡

    近年来,所谓“容器化”、“微服务”的关键字眼在互联网的业内出现频次颇多,也渐渐成为了企业级开发项目的必备良药。所以,作为一位后端程序猿,就不得不跟紧潮流,着手了...

    23号杂货铺
  • NLP系列学习:概率图模型简述

    在之前的一段时间里,忙于周围的乱七八糟的事情,在更新了上一期之后自己也很久没有更新,自己也想,如果自己没有用一种良好的心态去回忆总结自己所学的知识,即使花费再多...

    云时之间
  • Excel单元格内如何换行,这几招快拿小本本记下来

    Excel单元格如何换行?我们在日常的数据统计中经常会遇到的问题。我们会遇到单元格太小导致输入的内容无法显示的情况。是不是苦恼?其实我们可以通过自动换行的方式将...

    高效办公

扫码关注云+社区

领取腾讯云代金券