2010-12-22 1 views
1

Ich habe gelernt, wie man eine DLL erstellt, es war einfach, seine Unit Tests zu machen, weil es in der Projektkonfiguration erschien, dass mein DLL-Projekt seit es in der gleichen Lösung war Datei.Konfigurieren Sie ein Visual C++ 2010-Projekt zur Verwendung einer DLL

Jetzt beginne ich ein anderes Projekt, aber ich möchte entweder meine DLL mit ihr oder eine andere DLL verwenden, wo sage ich Visual, diese oder diese DLL zu verwenden?

Ich konfiguriert Visual die richtigen Header zu verwenden, aber wie kann ich es die DLL-Datei finden?

Antwort

3

Sie können dies in Visual Studio automatisch machen, damit der Benutzer Ihrer DLL dies nicht vergessen kann. Die typische DLL-Header-Datei könnte wie folgt aussehen:

#undef MYEXPORTS 
#ifdef BUILDING_MYDLL 
# define MYEXPORTS __declspec(dllexport) 
#else 
# define MYEXPORTS __declspec(dllimport) 
# pragma comment(lib, "mydll.lib") 
#endif 

MYEXPORTS void SomeFunction(); 
// etc.. 

Die Pragma Direktive injiziert eine Linker-Option in die OBJ-Datei, die den Linker stellt sicher, sucht immer nach dem LIB, wenn ein Client-Programm #include die Header-Datei. Dies ist derselbe Mechanismus, nach dem immer nach der richtigen Version der CRT-.lib-Datei gesucht wird, obwohl Sie diese in der Einstellung Zusätzliche Abhängigkeiten nicht explizit angeben. Dies ist ansonsten kein Standard, aber die Verwendung von DLLs ist sowieso nicht standardgemäß.

+0

Sind UNIX .so-Bibliotheken "Standard". Was sollte Standard sein und warum ist es kein Standard? Was macht Microsoft WIEDER FALSCH? – jokoon

2

Sie müssen die LIB-Datei zu Ihrem Projekt hinzufügen. Es sollte beim Kompilieren der DLL generiert worden sein und sich im selben Verzeichnis wie die kompilierte DLL befinden.

In VS2008 würden Sie die Projekteigenschaften öffnen und Linker, Eingabe, zusätzliche Abhängigkeiten aufrufen und dort die LIB-Datei angeben. Es sollte in VS2010 ziemlich ähnlich sein.

+0

Ich habe gerade irgendwo gelesen, dass es zwei verschiedene Arten von .lib-Dateien gibt, die eine, die mit einer DLL verlinkt ist, und die einfache statische lib-Art. Ich liebe einfach Microsoft. – jokoon

Verwandte Themen