//........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>
을 생략했습니다.미리 컴파일 된 헤더 문제
단일 프로젝트 파일에서 작업 한 적이 한번도 문제가되지 않았습니다.
이제 한 프로젝트에서 공유 코드를 수집하기 위해 새 DLL 프로젝트를 추가하려고합니다.
컴파일이 잘되고 ABC.dll도 생성되었습니다.
여기에 문제가 있습니다. ABC.dll을 사용하는 다른 프로젝트가 std::vector
이라는 컴파일 오류를 표시하면 존재하지 않습니다.
//...........Another Project using ABC.dll
int main(){
ABC abc;
}
C2039 '벡터'오류 : 나는 너무 소비자의 Stdafx.h에에있는 모든 라이브러리를 포함했다 '표준'
, 그것은 작업을 진행하기의 구성원이 아닌 .
아마 내가 미리 컴파일 된 헤더를 오용했습니다.
내가 PCH로하고있는 방식이 잘못되었거나 옳았는지 알고 싶습니다.
잘못된 경우 PCH를 사용하는 올바른 방법을 제안하면 감사하겠습니다.
감사합니다.
마지막 스 니펫에'#include'이 누락되었습니다. ABC.h를 컴파일하기 위해 필요한 것. stdafx.h에 포함 되었기 때문에 당신은 전에 이것을 깨닫지 못했습니다. 또한 첫 번째 스 니펫의 #include는 아무 것도하지 않고 이미 포함되어 있습니다. * 실제로 * 미리 컴파일 된 헤더와 아무 관련이 없습니다. –