2010-10-26 35 views
31

J'essaie d'exécuter l'outil this afin de convertir un projet Visual C++ en fichier makefile. Le projet que je suis en train de convertir projet est écrit en VS2008, alors j'utilise une référence à partir de la version 9. Microsoft.VisualStudio.VCProjectEngine.dllErreur 80040154 (exception non enregistrée de classe) lors de l'initialisation de VCProjectEngineObject (Microsoft.VisualStudio.VCProjectEngine.dll)

Il échoue dans cette ligne:

VCProjectEngine vcprojEngine = new VCProjectEngineObject(); 

à l'exception suivante:

Retrieving the COM class factory for component with CLSID {D19A00C4-A7F9-4E14-A5E1-D060B7EB57F3} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Lorsque essayé d'enregistrer Vcprojectengine.dll avec regsvr32, je me suis une erreur que le DllRegisterServer point d'entrée n'a pas été trouvé.

Une idée?

Merci d'avance.

Répondre

61

Il n'y a pas beaucoup de bonnes raisons pour que cela échoue, en particulier l'étape regsvr32. Exécutez dumpbin/exports sur cette DLL. Si vous ne voyez pas DllRegisterServer alors vous avez une installation corrompue. Il devrait avoir plus d'effets secondaires, vous ne seriez plus capable de construire des projets C/C++.

Un mode de défaillance standard est exécuté sur un système d'exploitation 64 bits. C'est un code non géré de 32 bits, vous obtiendrez en effet l'exception 'class not registered'. Projet + Propriétés, onglet Générer, modifiez Platform Target en x86.

+8

La plate-forme cible x86 était le problème. Je vous remercie! – rkellerm

+2

Juste couru dans le problème de 64 bits. Merci un million! – jacknad

+0

@Hans Passant plus de pensées à ce sujet? Je construis pour la plate-forme x86 mais obtient toujours une erreur pour une interopérabilité VB6 COM. Ma machine de build est Widows Server 2008 R2 –