web-dev-qa-db-fra.com

Erreur 80040154 (exception de classe non enregistrée) lors de l'initialisation de VCProjectEngineObject (Microsoft.VisualStudio.VCProjectEngine.dll)

J'essaye d'exécuter this tool afin de convertir un projet Visual C++ en makefile. Le projet que j'essaye de convertir le projet est écrit en VS2008, donc j'utilise une référence à Microsoft.VisualStudio.VCProjectEngine.dll de la version 9.

Il échoue dans cette ligne:

VCProjectEngine vcprojEngine = new VCProjectEngineObject();

À l'exception suivante:

La récupération de la fabrique de classes COM pour le composant avec CLSID {D19A00C4-A7F9-4E14-A5E1-D060B7EB57F3} a échoué en raison de l'erreur suivante: 80040154 Classe non enregistrée (exception de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Lorsque j'ai essayé d'enregistrer VCProjectEngine.dll avec regsvr32, j'ai reçu une erreur indiquant que le point d'entrée DllRegisterServer était introuvable.

Une idée??

Merci d'avance.

33
rkellerm

Il n'y a pas beaucoup de bonnes raisons pour lesquelles cela échouerait, en particulier l'étape regsvr32. Exécutez dumpbin/exports sur cette DLL. Si vous ne voyez pas DllRegisterServer, vous avez une installation corrompue. Cela devrait avoir plus d'effets secondaires, vous ne pourriez plus créer de projets C/C++.

Un mode d'échec standard exécute cela sur un système d'exploitation 64 bits. Il s'agit de code non géré 32 bits, vous obtiendriez en effet l'exception "classe non enregistrée". Projet + Propriétés, onglet Build, changez Platform Target en x86.

65
Hans Passant