【发布时间】:2023-03-24 13:14:01
【问题描述】:
我需要一些关于如何设置我的项目的建议。我正在构建一个静态库,想知道我使用预编译头文件的方式是否正确,然后再走得太远。
到目前为止,我的 stdafx 文件只包括(对于 DWORD 等类型)和(对于 std::string)。
我构建了一个名为 TestFuncs.cpp/h 的简单 cpp/header 组合
TestFuncs.cpp:
#include "stdafx.h"
using namespace std;
void MyFunc(DWORD a, string b) {
// irrelevant
}
TestFuncs.h
#pragma once
void MyFunc(DWORD a, std::string b);
这里的代码可以正确编译。我遇到的问题是,当我想在另一个项目中使用这个静态库时,我通常会执行 #include "path_to_my_static_lib_project/TestFuncs.h"
但是,这个问题是基于 TestFuncs.h,DWORD 和字符串在当时都是未知的,因为它们是从 stdafx.h 文件定义的类型。
我想出的一个解决方案(我不知道这样做是否正确)只是在 #pragma once 之后将 stdafx.h 包含在 TestFuncs.h 的顶部。现在项目工作文件是否使用预编译头文件。
这是应该怎么做,还是有合适的方法?
谢谢。
【问题讨论】:
标签: c++ static-libraries precompiled-headers