Question

Récemment, j'ai été confronté à une erreur lors de l'accès à MAPI via le framework .NET (comme décrit dans Cet article).Je me retrouve maintenant avec une série d'erreurs de violation d'accès à la mémoire.

Pour surmonter les problèmes, j'ai essayé d'utiliser ce composant tiers, qui possède un noyau Visual C++.Malheureusement, nous rencontrons toujours les mêmes erreurs.

Personnellement, je n'ai jamais utilisé Visual C++, mais ma question est la suivante :si la bibliothèque C++ est compilée à l'aide de Visual Studio 2005, à l'aide de Visual C++ - la mémoire du projet est-elle également gérée par le framework .NET, ce qui la soumettrait donc aux mêmes problèmes que les bibliothèques .NET dont nous sommes en utilisant?Ou est-ce que j'aboie dans le mauvais arbre ?

Était-ce utile?

La solution

Je ne suis pas entièrement sûr de ce que vous demandez, mais je vais essayer.

Visual C++ est un pur compilateur C/C++ et n'a donc aucune gestion de la mémoire de .NET, ni aucun de son environnement d'exécution. Vous devez appeler manuellement new et delete.

.NET fournit également C++/CLI, qui est une version légèrement modifiée de C++ qui cible le runtime .NET et prend en charge GC – par exemple.sa mémoire est gérée par le runtime .NET.

Sans plus de détails sur votre bug, je ne peux pas vraiment faire de suggestions, au-delà de vous suggérer de vous assurer d'utiliser les gardes GC appropriées et de fournir des finaliseurs partout où ils sont nécessaires.

Autres conseils

Les deux réponses précédentes ont mentionné "Managed C++", il s'agit d'un ancien module complémentaire qu'ils ont créé pour vous permettre d'utiliser le C++ managé dans un environnement .NET.Ce n'était pas un citoyen de première classe - contrairement à C++/CLI (texte du lien.Mais pour répondre à votre question initiale, non, Visual C++ n'est pas géré par le runtime .NET.Les C++ et C++/CLI gérés le sont.

Sauf si vous utilisez Managed C++ (ce qui ne semble pas être le cas), alors non, la mémoire n'est pas gérée par le CLR.

La méthode recommandée pour communiquer avec Exchange dans .Net est via WebDAV.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top