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.02.2009, 13:17

dll problem

Hallo
ich habe ein Problem mit einer dll datei, da kommt immer so eine Fehlermeldung:
Der Prozedureinsprungpunkt "D3DXCreateFontIndirectA" wurde in der DLL "d3dx9.dll" nicht gefunden.

...könnt ihr mir bitte weiterhelfen...ich komm nicht mehr weiter...danke im voraus...

MFG
euh...

WhiteMike

Alter Hase

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

2

27.02.2009, 13:26

1. Befindet sich die benötigte DLL in dem Verzeichnis, in dem dein Programm gestartet wird?

2. Ist die Version der DLL mit der DirectX-Version, die du verwendest, kompatibel?

Mit freundlichen Grüßen,
WhiteMike

3

27.02.2009, 13:32

1. also die dll datei muss doch im Verzeichnis System32 gespeichert werden
2. glaub nicht
euh...

4

27.02.2009, 13:33

2. wie meinst du das?
euh...

WhiteMike

Alter Hase

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

5

27.02.2009, 13:55

1. Da darf sie auch sein.

2. Welche Version von DirectX benutzt du denn genau? Die neueste Version ist nämlich DirectX 9.25 November 2008. Wenn ich jetzt ein Projekt damit anfangen würde, würde ich mir als erstes die neueste Version downloaden. In mein Projekt würde ich dann die neuesten Libs einbinden und die neueste DLL in den Ordner schieben, in der mein Programm ausgeführt wird (oder system32).
Dann sollten auch alle Funktionen aus der DLL gefunden werden können.

Mit freundlichen Grüßen,
WhiteMike

6

28.02.2009, 11:58

also ich hab die neueste DirectX datei...aber ich weiß halt nicht ob ich die neuesten lib und dll dateien habe...kannst du mir vllt mal einen link oder so gebn????
euh...

WhiteMike

Alter Hase

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

7

28.02.2009, 12:37

DirectX 9.25 SDK

Wie du weißt, wird die Bibliothek DirectX vorwiegend für die Spieleprogrammierung benutzt. Dabei besteht aus nahliegenden Gründen nicht nur aus einem großen Block, sondern aus einigen Komponenten. Darunter sind Direct3D und DirectSound.
Allein deswegen ist es falsch, wenn man von einer DirectX-Datei spricht.

Ferner gibt es noch eine Aufteilung. Einmal gibt es die DLLs für DirectX. Diese Abkürzung steht für Dynamic Linked Library. Du kannst es dir als Unterstützung für die EXE-Anwendungen ansehen. Sie können nicht selbstständig gestartet werden, sondern liefern den Anwendungen gewisse Funktionalitäten, die sie zum Funktionieren brauchen. Damit deine DirectX-Anwendung also funktioniert, muss es Zugriff auf so eine Datei haben.

Aber woher weiß dein Programm, welche Funktionen es benutzen kann und in welcher DLL sie bei der Ausführung liegen? Hier kommt das DirectX-SDK ins Spiel. Diese Abkürzung steht wiederum für Software Development Kit. Das ist also eine Werkzeugsammlung, um Software (in diesem Fall mit DirectX) zu entwickeln.
Darin ist mehr als nur die DLL enthalten, um fertigen Programmen zusätzliche Funktionalität zur Verfügung zu stellen. Unter anderem sind dort H-Dateien enthalten, die du in dein junges Projekt einbinden kannst. Warum macht man das? Damit dein Compiler weiß, welche Funktionen es gibt und wie sie benutzt werden. Sonst würde er rummeckern, dass er alle diese Funktionen, die du benutzten willst, gar nicht kennt.
Zusätzlich dazu gibt es einige LIB-Dateien, die du in dein Projekt einbinden musst, um auch den Linker zu befriedigen. Zwar wusste der Compiler, wie die Funktionen zusammengesetzt werden, aber dem Linker reicht das nicht. Dieser muss nämlich auch wissen, was die Funktionen genau machen. Diese Informationen bekommt er aus den LIB-Dateien, die du in dein Projekt einbindest und die du aus dem DirectX zusammen mit den H-Dateien bekommst.

an alle:
Stimmt es so? Ich frage mich gerade nämlich, woher der Linker weiß, in welcher DLL die nötige Funktionalität zu finden ist. Ist es etwas, was er aus der LIB bekommt?
Beim statischen Linken muss er dann statt der DLL-Info schlichtweg die Funktionalität einbinden. Ist es richtig so?
Irgendwie merke ich im Moment, wie viel man machen kann, ohne es wirklich tiefer verstehen zu müssen. :lol:

Mit freundlichen Grüßen,
WhiteMike

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

8

28.02.2009, 12:54

Zitat von »"WhiteMike"«

an alle:
Stimmt es so? Ich frage mich gerade nämlich, woher der Linker weiß, in welcher DLL die nötige Funktionalität zu finden ist. Ist es etwas, was er aus der LIB bekommt?
Nö, er geht nach dem Dateinamen. Und zwar erst im Arbeitsverzeichnis, dann in der PATH Umgebungsvariable und am Ende im Systemverzeichnis (absolute Garantie auf die Reihenfolge gebe ich nicht, das basiert auf Beobachtung). Dadurch kommts ja auch zur DLL Hell ...

WhiteMike

Alter Hase

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

9

28.02.2009, 13:09

Wie er die DLL auf dem System findet, weiß ich.

Die Frage war einfach, wie dieses Verhältnis von EXE und DLL genau funktioniert. Die Anwendung muss ja schon davor "wissen", wie die DLL heißt und welche Funktion auf welcher Adresse in der DLL liegt.
Der Linker muss praktisch einen Verweis auf die richtige DLL an einer Stelle angeben, an der eigentlich die Funktion ihr Tun anfangen müsste.

Und die Frage war einfach, ob er das mittels der LIB und der Option, ob statisch oder dynamisch gelinkt wird, bestimmt.

EDIT: Übrigens scheint das neue SDK eine ganz großartig überarbeitete Version zu sein, die, wenn ich es richtig verstanden habe, ganz neue Möglichkeiten bietet.

Zitat

Direct3D 10 and Direct3D 11 on Direct3D 9 Hardware (D3D10 Level 9)

Mit freundlichen Grüßen,
WhiteMike

10

28.02.2009, 16:59

Zitat von »"WhiteMike"«

Die Frage war einfach, wie dieses Verhältnis von EXE und DLL genau funktioniert. Die Anwendung muss ja schon davor "wissen", wie die DLL heißt und welche Funktion auf welcher Adresse in der DLL liegt.
Der Linker muss praktisch einen Verweis auf die richtige DLL an einer Stelle angeben, an der eigentlich die Funktion ihr Tun anfangen müsste.

afaik linkt der linker die lib wie ne objektdatei, nur das die lib eben nicht die eigentlichen funktionen, sondern aufrufe, die irgendwie von Windows an die dll weitergeleitet werden, enthält.
Und beim statischen linken wird halt die dll direkt gelinkt

Werbeanzeige