PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Visual Studio 2010 externe DLLs einbinden?


Gast
2011-05-26, 13:56:46
Hallo,

ich bräuchte für ein kleines Projekt externe C++ DLLs. Kann ich diese in Visual Studio direkt einbinden?
Google sagt mir bisher, dass ich dazu vermutlich auch die .h und die .lib Datei benötige, jedoch habe ich leider keinen Zugang zu diesen Dateien. Gibt es auch andere Möglichkeiten?

lg

Gast
2011-05-26, 14:56:58
mit LoadLibrary kannst du DLLs zu laufzeit nachladen und deren Funktionen nutzen

http://msdn.microsoft.com/en-us/library/ms684175%28v=vs.85%29.aspx

FlashBFE
2011-05-26, 15:39:58
Hallo,

ich bräuchte für ein kleines Projekt externe C++ DLLs. Kann ich diese in Visual Studio direkt einbinden?
Google sagt mir bisher, dass ich dazu vermutlich auch die .h und die .lib Datei benötige, jedoch habe ich leider keinen Zugang zu diesen Dateien. Gibt es auch andere Möglichkeiten?

lg

Mit welcher Sprache programmierst du selbst?

Threadstarter
2011-05-28, 15:20:11
@Gast
Danke, aber ich versteh leider den Beispielcode nicht ganz:
http://msdn.microsoft.com/en-us/library/ms686944%28v=vs.85%29.aspx

Es wird zuvor die Library geladen und dann über den handle "hinstLib" die gewünschte Funktion geladen? Jedoch verstehe ich nicht wie man die Funktion dann ausführen kann? Im Beispielcode wird ein String mit einem L davor auf "ProcAdd" gecastet? WTF?!?
Hab das nun irgendwie versucht, bekomme aber leider noch immer LinkerErrors.


@FlashBFE:
C++

Gnafoo
2011-05-28, 16:06:50
Das ist kein Cast, sondern ein Funktionsaufruf mittels Funktionszeiger. Die von GetProcAdress zurückgelieferte ProcAdd zeigt auf die Funktion in der Bibliothek und eben jene wird dort aufgerufen. L"whatever" ist ein „wide-string“-Literal, zusammengesetzt aus wchar_t anstatt char. Windows benutzt diese, um UTF-16-kodierte Strings zu speichern.

Ansonsten musst du wohl, wie in der Dokumentation von LoadLibrary etc. erwähnt gegen die Kernel32.lib linken.

Darf man fragen, was du versuchst zu bewerkstelligen, wenn weder Header noch .lib-Files hast?

Threadstarter
2011-05-28, 16:48:48
Danke für die gute Erklärung, bin noch ziemlich unerfahren was C++ angeht und versuche grad selbst etwas zu Experimentieren.

Es geht darum die Audio-Library CLAM (www.clam-project.org) in die Grafikengine Ogre3D zu integrieren. Der CLAM-Code läuft bereits unter Linux und ich hatte gehofft nun einfach die benötigten Funktionen über die auf der Website erhältlichen CLAM-DLLs einzubinden zu können. Der Linux-Code stammt nicht von mir und ich kann leider nur mutmaßen in welcher DLL welche Funktion versteckt ist bzw. hab ich mich bisher nicht mit CLAM beschäftigt, sondern nur Instruktionen des anderen Programmierers befolgt, dieser hat jedoch kaum Ahnung mit der Programmierung unter Windows bzw. VisualStudio. Außerdem hatte ich leider bisher kaum Erfahrung im Umgang mit DLLs etc. und weiß deshalb nichtmal ob das so funktioniert.
CLAM stellt dabei leider nur die DLLs bereit und nicht die Lib oder die header-Datei - zumindest konnte ich sie bisher nicht finden...

ShadowXX
2011-05-29, 17:02:53
Du solltest vielleicht das hier: http://clam-project.org/wiki/Main_Page mal durchgehen.