2009-06-12 15 views
4

Ich habe eine DLL, die ich ohne Probleme in Visual C# verwendet habe (einfach die Referenz hinzufügen und den Namespace verwenden). Jetzt versuche ich, C++ zu lernen, und ich verstehe nicht, wie Sie einen Namespace von einer DLL referenzieren. Ich kann mit der rechten Maustaste auf ein Projekt klicken und "Referenzen" auswählen und von dort auf "Neue Referenz hinzufügen" klicken, aber das liefert mir nur ein leeres "Projekt" -Fenster. Was vermisse ich?Verwenden einer DLL in Visual Studio C++

Antwort

6

C++ ist ein Los unterscheidet sich von C#/VB.Net, wenn es um die Verarbeitung von DLL-Referenzen kommt. In C# ist lediglich eine DLL erforderlich, da sie Metadaten enthält, die die Strukturen beschreiben, die darin liegen. Der Compiler kann diese Informationen so lesen, dass sie von einem anderen Projekt verwendet werden können.

C++ hat nicht das Konzept von Metadaten in der DLL in dem Sinne, dass C# tut. Stattdessen müssen Sie die Metadaten explizit in Form einer Headerdatei bereitstellen. Diese Dateien sind in Ihrem C++ - Projekt enthalten und dann wird die DLL zur Laufzeit verzögert geladen. Sie fügen sozusagen in C++ keine Referenz hinzu, sondern fügen stattdessen eine Header-Datei hinzu.

Sobald die Header-Datei enthalten ist, können Sie dann den Namespace zugreifen, indem Sie es in Ihren CPP-Dateien

using namespace SomeNamespace; 
+1

Ew, mit Namespace: | – GManNickG

+0

@GMan, es ist nur wirklich böse, wenn in einer Header-Datei getan. Ich wollte eigentlich "in deinen CPP" -Dateien sagen, aber ich habe stattdessen C++ eingegeben. – JaredPar

+0

'using namespace' ist wie alles andere ein Werkzeug, das richtig oder falsch verwendet werden kann. 'using namespace' in einer Headerdatei - bad. 'namespace' in einer C++ Datei verwenden - generell OK. Bis es ein Problem verursacht, hörst du einfach damit auf. –

0

EDIT einschließlich: Die vorherige Antwort wird mehr hilfreich, wenn Sie nicht verwaltete C++ verwenden; Ich habe aufgrund der C# -Referenz angenommen, dass Sie auf verwaltetes C++ abzielen.

Der Dialog 'Referenz hinzufügen' sollte eine Reihe von Registerkarten haben - 'Projekte' listet Projekte in der aktuellen Lösung auf; .NET listet die Bibliotheken auf, die im GAC installiert sind, und "Durchsuchen" ermöglicht es Ihnen, selbst eine DLL zu finden.

Wenn Sie nur einen Verweis auf die DLL hinzufügen möchten, sollten Sie es mit "Durchsuchen" tun können. Wenn es sich bei der Ausgabe eines Projekts um die Quelle handelt, fügen Sie das Projekt zur Lösung hinzu und es wird unter der Registerkarte "Projekte" angezeigt.

Wenn das nicht hilft, welche Version von Visual Studio verwenden Sie und wo/was ist die DLL, die Sie verwenden möchten?

3

Zunächst einmal, wenn Sie versuchen, die gleiche DLL zu verwenden, die Sie in Ihrer C# -Anwendung verwendet haben, wenn Sie reines natives C++ verwenden, ist es nicht einfach, Aufrufe in diese DLL zu tätigen. Das Problem ist, dass die DLL, auf die Sie in C# verweisen, sich auf das .NET-Framework verlässt, um ausgeführt zu werden (es ist eine "verwaltete" DLL, wie alle C# -, VB.NET- und C++/CLI-Assemblies). Es gibt eine einfache Möglichkeit, "verwalteten" Code aus C++ zu referenzieren, und zwar durch Ausführen eines verwalteten C++ - Projekts (AKA C++/CLI) (Auswahl aus dem Abschnitt "CLR" im C++ - Projektassistenten in Visual Studio). Andernfalls können Sie nur auf die verwaltete DLL zugreifen, indem Sie sie COM anzeigen und COM verwenden, um auf das Objekt zuzugreifen.

Verwandte Themen