//........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>
Jusqu'à aujourd'hui, j'ai sautées #include <standard-lib.h>
dans mes têtes en déléguant à tête Stdafx.h.problèmes d'en-tête précompilés
Cela n'a jamais été un problème lorsque je travaillais sur un seul fichier de projet.
Maintenant j'essaye d'ajouter un nouveau projet de DLL pour rassembler des codes partagés dans un projet.
Il a bien compilé et généré ABC.dll aussi.
Voici un problème. Lorsqu'un autre projet qui utilise ABC.dll affiche une erreur de compilation indiquant que std::vector
n'existe pas.
//...........Another Project using ABC.dll
int main(){
ABC abc;
}
Erreur « vecteur » C2039: n'est pas membre du « std »
Pour le faire fonctionner, je devais inclure toutes les bibliothèques dans Stdafx.h du consommateur trop . Peut-être que j'ai mal utilisé l'en-tête précompilé.
Je veux savoir si la façon dont j'ai fait avec le PCH était erronée ou juste.
Si ce n'est pas le cas, j'apprécierais que vous suggériez de bonnes façons d'utiliser PCH.
Merci.
Le dernier extrait est manquant '#include'. Ce qui est nécessaire pour compiler ABC.h. Vous n'avez jamais réalisé cela avant, car stdafx.h l'incluait. Notez également que le #include pour le vecteur dans le premier extrait ne fait rien d'utile, il était déjà inclus. Rien de tout cela * en réalité * n'a rien à voir avec les en-têtes précompilés. –