如何在 C++ 中找到类型的定义

Posted

技术标签:

【中文标题】如何在 C++ 中找到类型的定义【英文标题】:How to find definition of type in C++ 【发布时间】:2017-07-19 06:09:53 【问题描述】:

我正在尝试在 buildroot 下交叉编译 qt5webengine 但有一些编译错误。

output/build/qt5webengine-5.6.1-1/src/core/delegated_frame_node.cpp: In function void QtWebEngineCore::waitChromiumSync(gfx::TransferableFence*):
output/build/qt5webengine-5.6.1-1/src/core/delegated_frame_node.cpp:202:16: error: PFNEGLCLIENTWAITSYNCKHRPROC does not name a type static PFNEGLCLIENTWAITSYNCKHRPROC eglClientWaitSyncKHR = 0;
output/build/qt5webengine-5.6.1-1/src/core/delegated_frame_node.cpp:207:41: error: PFNEGLCLIENTWAITSYNCKHRPROC was not declared in this scope

我试图找到 PFNEGLCLIENTWAITSYNCKHRPROC 的定义,但发现只有以下 typedef:

typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);

说实话,我不知道如何解释它。那是函数指针类型的声明吗?

谁能解释一下?

第二个问题 - 如果这不是 PFNEGLCLIENTWAITSYNCKHRPROC 类型的定义 - 如何找出正确的定义在哪里?我正在尝试在 Linux 下编译它,这个 qt5webengine 使用 gcc/g++ 4.9.2。

【问题讨论】:

这将 PFNEGLCLIENTWAITSYNCKHRPROC 定义为 函数 的类型,而不是函数指针的类型。 【参考方案1】:

在互联网上稍作搜索后,我发现 qt 框架对 webengine 组件存在交叉编译问题,但他们已在 2016 年 3 月 18 日上午 7:47 关闭/修复了他们的问题。因此,您可以查看您的 Qt 版本并根据需要进行更新。

您可以查看他们的错误报告页面:webengine cannot be built on TI hardware

【讨论】:

以上是关于如何在 C++ 中找到类型的定义的主要内容,如果未能解决你的问题,请参考以下文章

在 Boost Property 树库中,我如何以自定义方式处理文件未找到错误(C++)

如何在共享库中找到 C++ isfinite() 的解析位置?

无法在具有自定义运算符 ==() 的 c++ 无序集中找到用户定义的类型

如何找到 C++ 编译器认为定义为常量的内容?

python 调用c++程序, c++程序如何返回数组给python

如果自定义类型从 C++ 作为 const 传递,如何使用 QML 注册自定义类型