//........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>
Bis heute habe ich #include <standard-lib.h>
in meine Header übersprungen, indem es Stdafx.h Header zu delegieren.vorkompilierte Header Probleme
Es war nie ein Problem, wenn ich in einer einzigen Projektdatei arbeitete.
Jetzt versuche ich ein neues DLL-Projekt hinzufügen, um gemeinsame Codes in einem Projekt zu sammeln.
Es kompiliert gut und generiert auch ABC.dll.
Hier ist ein Problem. Wenn ein anderes Projekt, das ABC.dll verwendet, Compile-Fehler anzeigen, der besagt, dass std::vector
nicht vorhanden ist.
//...........Another Project using ABC.dll
int main(){
ABC abc;
}
Fehler C2039 'Vektor': kein Mitglied von 'std' ist
Um es funktioniert, habe ich die Bibliotheken aller Einrichtungen in der Verbraucher zu Stdafx.h musste schließen .
Vielleicht habe ich den vorkompilierten Header missbraucht.
Ich möchte wissen, ob die Art und Weise, die ich mit dem PCH gemacht habe falsch oder richtig war.
Wenn es falsch ist, würde ich es begrüßen, wenn Sie richtige Wege zur Verwendung von PCH vorschlagen.
Danke.
Das letzte Snippet fehlt '#include'. Welche benötigt wird, um die ABC.h kompilieren zu lassen. Du hast das nie zuvor bemerkt, weil stdafx.h es enthielt. Beachten Sie auch, dass das # include für Vektor im ersten Snippet nichts nützliches tut, es war bereits enthalten. Nichts davon * hat * etwas mit vorkompilierten Headern zu tun. –