Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

27.10.2013, 19:05

Auf DLL zugreifen deren Funktionen in einer Klasse liegen

Also ich hab eine DLL und dort wird eine Funktion exportiert.
Eigentlich sind dort aber mehrere Hundert Funktionen drin, somit gehe ich davon aus, dass es sich dabei um eine Klasse handelt und der alle eigentlichen Funktionen stecken.

Wie kann ich solch eine DLL einbinden und deren Funktionen nutzen?

FSA

Community-Fossil

  • Private Nachricht senden

2

27.10.2013, 19:12

Dll laden:

C-/C++-Quelltext

1
LoadLibrary("Dll.DLL");


Und dann kannst du dir einen Zeiger auf deine Funktion holen mittels GetProcAddress

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

3

27.10.2013, 19:20

Aha und mehr ist das nicht?
Kann man sich auch irgendwie alle solche Functionen anzeigen lassen die in der DLL stecken?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

27.10.2013, 19:24

Wie kann ich solch eine DLL einbinden und deren Funktionen nutzen?

Am besten, indem du die vom Hersteller der dll zur Verfügung gestellten libs und Header benutzt... ;)

Kann man sich auch irgendwie alle solche Functionen anzeigen lassen die in der DLL stecken?

http://www.dependencywalker.com/

5

27.10.2013, 19:53

Ja und diese funktionieren lediglich mit C++.
Ich möchte die DLL jedoch auch mit anderen Sprachen nutzen können, die keine .lib includieren können.

Und der dependencywalker zeigt logischerweise nur die direkt exportierte funktion an, und nicht die dahintersteckenden.

FSA

Community-Fossil

  • Private Nachricht senden

6

27.10.2013, 19:55

Wie willst du denn auf nicht exportierte Funktionen zugreifen? Was hast du genau vor?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

27.10.2013, 20:01

Ja und diese funktionieren lediglich mit C++.
Ich möchte die DLL jedoch auch mit anderen Sprachen nutzen können, die keine .lib includieren können.

Ich fürchte, das wird leider nicht einfach so möglich sein. Das Exportieren von Klassen in dlls an sich ist bereits an Microsoft-spezifische Spracherweiterungen gebunden und funktioniert selbst in Visual C++ nur unter ganz bestimmten Voraussetzungen.

Um was für andere Sprachen geht es genau? Was genau ist das für eine Library?

8

27.10.2013, 20:30

eine engine ist es und es soll für purebasic und glbasic sein.
also bliebe nur eine dll zu erstellen welche die geladenenen funktionen aus der lib einzeln exportiert, sozusagen weiterreicht.
keine ahnung wie das geht

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

9

27.10.2013, 21:37

Und der dependencywalker zeigt logischerweise nur die direkt exportierte funktion an, und nicht die dahintersteckenden.


Ich glaube, da hast du jetzt ganz schlechte Karten. An nicht exportierte Funktionen einer DLL kommt man meines Wissens nach nicht heran.
Vielleicht könnte man sich irgendwas zusammenhacken wenn man nen MAP File der DLL hat usw.
Aber mit normalen und stabilen Wegen wird das wohl nichts.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

10

28.10.2013, 08:50

also müsste ich eine dll erstellen die die funktionen der lib zur verfügung stellt.

da ich davon keine ahnung habe, wie müsste eine solche main.cpp aussehen welche diese funktionen exportiert?
vielleicht könnte mir da jemand für den anfang weiterhelfen.

Werbeanzeige