Meilleur auteur de réponses
une série de questions posées par le compilateur qui invoque des fonctions non connues sur les constructeurs

Question
-
bonjour
J'ai des diagnostiques générés par le compilateur que je ne sais pas interpréter. ils ont émis sur les constructeurs qui sont vides
je vous met le Code et les diagnostiques
CWManager::CWManager() { } CWManager::~CWManager() { }
et les erreurs
1>E:\usr\Memoria\dev\Common\com\ClasseAlignerManaged.hpp(61): warning C4482: extension non standard utilisée : enum 'enChunkType' utilisé dans le nom qualifié 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3280: 'SpecificationLoader::CWManager::Dispose' : une fonction membre d'un type managé ne peut pas être compilée comme fonction non managée 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(void)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3642: 'void SpecificationLoader::CWManager::Dispose(bool)' : impossible d'appeler une fonction avec la convention d'appel __clrcall à partir du code natif 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(void)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3175: 'SpecificationLoader::CWManager::Dispose' : impossible d'appeler une méthode de type managé à partir d'une fonction non managée 'SpecificationLoader::CWManager::Dispose' 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(void)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3821: 'System::GC' : impossible d'utiliser un type ou une fonction managée dans une fonction non managée 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(void)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3821: 'System::GC::SuppressFinalize' : impossible d'utiliser un type ou une fonction managée dans une fonction non managée 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(void)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3821: 'this' : impossible d'utiliser un type ou une fonction managée dans une fonction non managée 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(void)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3642: 'void System::GC::SuppressFinalize(System::Object ^)' : impossible d'appeler une fonction avec la convention d'appel __clrcall à partir du code natif 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(void)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3175: 'System::GC::SuppressFinalize' : impossible d'appeler une méthode de type managé à partir d'une fonction non managée 'SpecificationLoader::CWManager::Dispose' 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(void)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3821: 'void SpecificationLoader::CWManager::Dispose(void)' : impossible d'utiliser un type ou une fonction managée dans une fonction non managée 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(void)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3645: 'SpecificationLoader::CWManager::Dispose' : __clrcall ne peut pas être utilisé sur les fonctions compilées en code natif 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(void)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3280: 'SpecificationLoader::CWManager::Dispose' : une fonction membre d'un type managé ne peut pas être compilée comme fonction non managée 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(bool)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3821: 'SpecificationLoader::CWManager' : impossible d'utiliser un type ou une fonction managée dans une fonction non managée 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(bool)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3821: 'SpecificationLoader::CWManager::~CWManager' : impossible d'utiliser un type ou une fonction managée dans une fonction non managée 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(bool)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3642: 'SpecificationLoader::CWManager::~CWManager(void)' : impossible d'appeler une fonction avec la convention d'appel __clrcall à partir du code natif 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(bool)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3175: 'SpecificationLoader::CWManager::~CWManager' : impossible d'appeler une méthode de type managé à partir d'une fonction non managée 'SpecificationLoader::CWManager::Dispose' 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(bool)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3821: 'System::Object' : impossible d'utiliser un type ou une fonction managée dans une fonction non managée 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(bool)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3821: 'System::Object::Finalize' : impossible d'utiliser un type ou une fonction managée dans une fonction non managée 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(bool)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3642: 'void System::Object::Finalize(void)' : impossible d'appeler une fonction avec la convention d'appel __clrcall à partir du code natif 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(bool)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3175: 'System::Object::Finalize' : impossible d'appeler une méthode de type managé à partir d'une fonction non managée 'SpecificationLoader::CWManager::Dispose' 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(bool)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3821: 'void SpecificationLoader::CWManager::Dispose(bool)' : impossible d'utiliser un type ou une fonction managée dans une fonction non managée 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(bool)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3645: 'SpecificationLoader::CWManager::Dispose' : __clrcall ne peut pas être utilisé sur les fonctions compilées en code natif 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::Dispose(bool)' générée par le compilateur 1>E:\usr\Memoria\dev\Linguistic\WordReader\com\WordManager.h(60): error C3280: 'SpecificationLoader::CWManager::CWManager (static class constructor)' : une fonction membre d'un type managé ne peut pas être compilée comme fonction non managée 1> Le diagnostic s'est produit dans la fonction 'void SpecificationLoader::CWManager::CWManager(void)' générée par le compilateur
Jean Noël Martin
Réponses
-
Et ce problème est maintenant bloquant. En fait il manquait la directive #pragma managed dans l'include
Jean Noël Martin
- Modifié JeanNoel53 mardi 19 novembre 2013 16:59
- Marqué comme réponse JeanNoel53 mardi 19 novembre 2013 16:59
Toutes les réponses
-
Bonjour,
Est-il possible de voir le contenu complet du fichier WordManager.h ainsi que le fichier .cpp associé ?
Cordialement
Gilles TOURREAU - MVP C#
Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
- MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
- MCSA : SQL Server 2012
- MCITP : SQL Server 2008 Developper
- MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure
- Modifié Gilles TOURREAUModerator lundi 18 novembre 2013 17:11
-
vous l'avez sous les yeux
/******************************************************************************* * NOM: WordManager.h * ROLE: * HISTORIQUE: * 05/05/2001, yab, initial version *******************************************************************************/ #ifndef WORDMANAGER_H #define WORDMANAGER_H /*_____INCLUDE-FILES__________________________________________________________*/ /*_____GLOBAL-DEFINE__________________________________________________________*/ /*_____GLOBAL-TYPES___________________________________________________________*/ /*_____GLOBAL-DATA____________________________________________________________*/ /*_____GLOBAL-MACROS__________________________________________________________*/ /*_____GLOBAL-FUNCTIONS-PROTOTYPES____________________________________________*/ enum { START_READER = 1, STOP_READER, OPEN_DOCUMENT, CLOSE_DOCUMENT, INITIALIZE_POINT_BLOC, READ_BLOC, GO_NEXT_BLOC }; /*_____CLASS-DEFINITION_______________________________________________________*/ namespace SpecificationLoader { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace System::IO; using namespace System::Runtime::InteropServices; namespace Word = Microsoft::Office::Interop::Word; public ref class CWManager { public: CWManager::CWManager(); CWManager::~CWManager(); void CWManager::OnDocumentOpen(void); static Word::Application^ objApplication = gcnew Word::Application; static Word::Document^ objDocument = gcnew Word::Document; static Word::Documents^ objDocuments = objApplication->Documents; static Word::Paragraphs^ objParagraphs; static Word::Paragraph^ objParagraph; // property objParagraph->Format^ ParagraphFormat; erc CWManager::GetNbWords(); erc CWManager::StartWordApi(); erc CWManager::StopWordApi(); erc CWManager::OpenWordDocument(std::wstring wsFullPathName/*, Word::Application^ objApplication, Word::Document^ objDocument, Word::Documents^ objDocuments*/); static void CWManager::StartDocAnalysis( System::ComponentModel::BackgroundWorker^ backgroundWorker1, long ulNbWord, bool bNewDoc/*, Word::Application^ objApplication, Word::Document^ objDocument, Word::Documents^ objDocuments*/); void CWManager::StartCoherenceAssertion( System::ComponentModel::BackgroundWorker^ backgroundWorker1, long ulNbWord ); static void CWManager::CloseDocument( System::ComponentModel::BackgroundWorker^ backgroundWorker1, Word::Application^ objApplication, Word::Document^ objDocument, Word::Documents^ objDocuments); erc CWManager::InitializePointBloc(bool & bIsTextEmpty); erc CWManager::ReadBloc(CBloc* pBloc); erc CWManager::GoNextBloc(bool & bIsEndOfText); }; }; #endif
Jean Noël Martin
-
Bonjour,
Avez-vous essayé de supprimer le destructeur ?
Cordialement
Gilles TOURREAU - MVP C#
Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
- MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
- MCSA : SQL Server 2012
- MCITP : SQL Server 2008 Developper
- MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure -
-
Et ce problème est maintenant bloquant. En fait il manquait la directive #pragma managed dans l'include
Jean Noël Martin
- Modifié JeanNoel53 mardi 19 novembre 2013 16:59
- Marqué comme réponse JeanNoel53 mardi 19 novembre 2013 16:59