Frage

Kürzlich hatte ich mit einem Fehler beim Zugriff auf MAPI über das .NET Framework zu kämpfen (wie in beschrieben). Dieser Artikel).Ich habe jetzt eine Reihe von Fehlern wegen Speicherzugriffsverletzungen.

Um die Probleme zu überwinden, habe ich versucht, Folgendes zu verwenden: diese Komponente eines Drittanbieters, das über einen Visual C++-Kern verfügt.Leider haben wir immer noch die gleichen Fehler.

Ich persönlich habe Visual C++ noch nie verwendet, aber meine Frage ist:Wenn die C++-Bibliothek mit Visual Studio 2005 und Visual C++ kompiliert wird, wird der Speicher des Projekts auch vom .NET-Framework verwaltet, was dazu führen würde, dass es denselben Problemen unterliegt wie die .NET-Bibliotheken, mit denen wir es zu tun haben verwenden?Oder bin ich der falsche Baum?

War es hilfreich?

Lösung

Ich bin mir nicht ganz sicher, was Sie fragen, aber ich werde es versuchen.

Visual C++ ist ein reiner C/C++-Compiler und verfügt daher weder über die Speicherverwaltung noch über die Laufzeit von .NET. Sie müssen new und delete manuell aufrufen.

.NET bietet auch C++/CLI, eine leicht modifizierte Version von C++, die auf die .NET-Laufzeitumgebung abzielt und GC-fähig ist – z. B.Sein Speicher wird von der .NET-Laufzeit verwaltet.

Ohne weitere Details zu Ihrem Fehler kann ich keine wirklichen Vorschläge machen, außer Ihnen vorzuschlagen, dass Sie sicherstellen, dass Sie die entsprechenden GC-Schutzvorrichtungen verwenden und die Finalizer an allen Stellen bereitstellen, an denen sie benötigt werden.

Andere Tipps

In den beiden vorherigen Antworten wurde „Managed C++“ erwähnt. Dabei handelt es sich um eine alte Ergänzung, die Sie verwendet haben, um Ihnen die Verwendung von Managed C++ in einer .NET-Umgebung zu ermöglichen.Es war kein Bürger erster Klasse – im Gegensatz zu C++/CLI (Link Text.Aber um Ihre ursprüngliche Frage zu beantworten: Nein, Visual C++ wird nicht von der .NET-Laufzeit verwaltet.Verwaltetes C++ und C++/CLI sind.

Sofern Sie kein Managed C++ verwenden (was nicht der Fall zu sein scheint), wird der Speicher nicht von der CLR verwaltet.

Die empfohlene Methode zur Kommunikation mit Exchange in .Net ist WebDAV.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top