[英]How to use precompiled header with dynamic library and console application?
我对预编译的 header 有问题。 看起来有点像
ftpch.h
#pragma once
#include <vector>
#include <iostream>
#include <string>
#include <Windows.h>
ftpch.cpp
#include "ftpch.h"
然后我的 dll 库中有一个 header 文件和 cpp。 测试.h
#pragma once
// DLL_EXPORT is a macro that changes for dll and console app like that:
// __declspec(dllexport) and __declspec(dllimport)
class DLL_EXPORT Test
{
std::string foo() {return "ara ara"};
}
当我编译我的动态库项目时,这段代码编译得很好,但是当我在我的控制台应用程序项目中包含“test.h”并尝试编译它时编译失败。 我得到的错误是:
C2039: 'string' is not a member of 'std'
您的 header 文件应该始终是自给自足的。 将您的库(在本例中为<string>
)包括在您需要它们的地方、您需要它们的任何地方以及仅在您需要它们的地方。
如果您的 header 需要 function 的某个库,请将其包含在该文件中; 不要回复已经包含该库的其他 header,因为如果该不同的文件发生更改,那么您就不走运了。
您已经通过#pragma once
获得了#include
保护,因此将#include <string.h>
添加到需要它的 header 文件中不会导致冲突,并且还会使它们更易于维护和解释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.