gpt4 book ai didi

uwp - 如何使用多个预编译头文件;一些来自图书馆

转载 作者:行者123 更新时间:2023-12-05 04:01:00 26 4
gpt4 key购买 nike

我不认为这对我的项目来说是独一无二的,它适用于任何使用预编译头文件的 C++ 库和使用具有自己的预编译头文件的库的项目。只是 C++/winRt header 非常耗时,您确实需要预编译它们。

我有一个 C++/winRT UWP 库。由于它使用 Windows 运行时 API,因此它“需要”预编译那些庞大的头文件。我将该文件称为“btwrpch.h”,因为它主要包含蓝牙运行时 API。库构建良好。

现在这个库将用于另一个 C++/winRT UWP 项目,该项目也使用 Windows 运行时,主要是 UI 内容。该项目的预编译头文件使用经典的 pch.h。

要使用该库,该项目具有包括 btwrpch.h 在内的库头文件。该项目有自己的 pch.h 文件。

我不知道如何为两者创建预编译头文件。

在项目中我放置了 btwrpch.cpp 文件和 pch.cpp 文件。我将这些 cpp 文件中的每一个都配置为生成预编译头文件。

在项目属性预编译头选项中我有两个文件,pch.h;btwrpch.h 和两个输出文件$(IntDir)pch.pch; $(IntDir)btwrpch.pch;

然而,当我重建项目时,我得到了错误

fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "pch.h; btwrpch.h"' to your source?

我有一个名为 app.cpp 的源文件(除了 header.cpp 文件之外),其中包含两个 header 。查看 Debug 目录,我看到了 pch.pch 和 btwrpch.pch。

我做错了什么?

请注意,如果我将 btwrpch.h 文件合并到 pch.h 中并只定义一个预编译头文件,它就可以正常工作。我不希望图书馆用户必须这样做。

最佳答案

虽然您可以有多个 precompiled header files每个项目,每个编译单元最多可以有一个预编译头文件。显然,您正在将多个预编译头文件拉到一个编译单元中。这是不支持的。

What am I doing wrong?

您正在将预编译的头文件包含到其他头文件中。这不是它们的用途。仅将预编译头文件包含到编译单元中。

这里的解决方案很简单:从库的公共(public)接口(interface)(定义 API 的头文件)中删除所有预编译的头文件。相反,包括库接口(interface)所依赖的所有头文件,就好像您根本没有使用预编译头文件一样。

使用该库时,将库头文件包含到用于生成预编译头的编译单元中(例如,通过向 pch.h 添加 #include "mylib.h" 指令)。有了它,库接口(interface)及其所有依赖项都会在使用项目中预编译。

关于uwp - 如何使用多个预编译头文件;一些来自图书馆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55709100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com