//........Project for ABC.dll
//ABC.h
#pragma once
class ABC{
public:
ABC(){}
private:
std::vector<int> m_vector;
};
//ABC.cpp
#include "Stdafx.h"
#include "ABC.h"
//Stdafx.h
#include <vector>
今日まで、私はSTDAFX.Hヘッダにそれを委譲することによって、私のヘッダーに#include <standard-lib.h>
をスキップしました。プリコンパイルヘッダの問題
私は1つのプロジェクトファイルで作業しても問題はありません。
今私は1つのプロジェクトで共有コードを収集するための新しいDLLプロジェクトを追加しようとしています。
コンパイル済みでABC.dllも生成されています。
ここに問題があります。 ABC.dllを使用する別のプロジェクトで、std::vector
が存在しないというコンパイルエラーが表示された場合。
//...........Another Project using ABC.dll
int main(){
ABC abc;
}
エラーC2039「ベクトルは」:それは働いて得るために
「STD」のメンバーではないですが、私はあまりにも消費者のSTDAFX.H内のすべてのライブラリを含める必要がありました。
おそらく、私はあらかじめコンパイルされたヘッダーを悪用しています。
PCHでやっているやり方が間違っているのか正しいのかを知りたい。
もしそれが間違っていたら、PCHを正しく使用することをお勧めします。
ありがとうございました。
最後のスニペットには、#includeがありません。これは、ABC.hをコンパイルするのに必要なものです。あなたはstdafx.hがそれを含んでいたので、これを前に気付かなかった。また、最初のスニペットの#includeは役に立つものではなく、すでに含まれています。これらのどれも、実際にプリコンパイルされたヘッダーとは関係ありません。 –