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

Maxolia

unregistriert

1

11.02.2013, 13:09

C++ Direct3d

Hi.
Ich möchte etwas mit Drrect3D machen, doch ich kriege ständig ne Fehlermeldung, bei den simpelstem Grundfenster.

Code:error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_Direct3DCreate9@4" in Funktion ""public: void __thiscall Direct3D::Init(struct HWND__ *)" (?Init@Direct3D@@QAEXPAUHWND__@@@Z)". c:\Users\Max\documents\visual studio 2010\Projects\Direct3D\Direct3D\Direct3D.obj


und

Code:error LNK1120: 1 nicht aufgelöste externe Verweise. c:\users\michael\documents\visual studio 2010\Projects\Direct3D\Debug\Direct3D.exe


Kann mir jemand sagen, wie ich den Linker Fehler beheben kann.
(Habe exakt, nach diesem Tutorial gearbeitet:
http://www.youtube.com/wa ....... p;list=PL010894570055D2DA)


PS: Ist es sinnvoll direkt mit direct3D 11 anzufangen oder kann ich problemlos mit der 9 arbeiten?

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

FSA

Community-Fossil

  • Private Nachricht senden

3

11.02.2013, 13:45

Du kannst problemlos mit DirectX9 arbeiten. Es ist zwar schon alt, aber es reicht locker noch für grafisch aktuelle Spiele.

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

4

11.02.2013, 14:00

Du hast vergessen d3d9.lib zu linken. Ich würde mittlerweile vermutlich eher zu Direct3D 11 raten, auch wenn der Einsteig dort vielleicht etwas schwieriger ist. Direct3D 9 ist einfach wirklich schon arg veraltet. Nachdem du aber offenbar noch mit solchen grundlegenden Dingen zu kämpfen hast, wäre mein Vorschlag an dich überhaupt, vielleicht erstmal z.B. mit SFML noch etwas mehr Programmiererfahrung zu sammeln, bevor du dich gleich in Direct3D stürzt. Abgesehen davon würde ich empfehlen, die aktuelle Version von Visual Studio zu benutzen. Auch das im verlinkten Tutorial verwendete DirectX SDK ist mittlerweile veraltet. Das was von DirectX noch übrig ist, ist nun direkt ins Windows SDK integriert. Die entsprechenden Header und Libs sind bei Visual Studio 2012 also schon dabei...

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »dot« (11.02.2013, 14:12)


Maxolia

unregistriert

5

11.02.2013, 17:54

Doch ich habe alles eingebunden.

Und mit SFML habe ich schon gearbeitet, genauso wie mit OpenGl.
Nur habe ich einfach probleme, dass der die Lib ihrgendwie nicht erkennt.

Techie

Alter Hase

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

6

11.02.2013, 18:03

Hast du das DirectX SDK installiert? Ist zwar nicht mehr zwingend nötig, aber manchmal soll es Probleme geben.

@dot Das Problem bei DirectX 11 ist, dass es nur auf bestimmten Grafikkarten ( wie ich arbeitet DirectX 10 HLSL 4.1 xD ) kannst du DirectX 11 mit HLSL 5 vergessen.
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

11.02.2013, 18:05

Da sich da offenbar in zwei Foren parallel die gleiche Diskussion entwickelt, verlink ich hier einfach mal: http://www.c-plusplus.de/forum/p2297961

Doch ich habe alles eingebunden.

Hast du nicht, sonst hättest du den Fehler nicht.

Und mit SFML habe ich schon gearbeitet, genauso wie mit OpenGl.

Und was hast du mit SFML und OpenGL bisher so gemacht?

Nur habe ich einfach probleme, dass der die Lib ihrgendwie nicht erkennt.

Das Problem ist nicht, dass "er die Lib irgendwie nicht erkennt", sondern dass du "ihm" gar nicht gesagt hast, dass "er" sie linken soll...


Hast du das DirectX SDK installiert? Ist zwar nicht mehr zwingend nötig, aber manchmal soll es Probleme geben.

Probleme gibts genau dann, wenn man das veraltete DirectX SDK zusammen mit dem aktuellen Windows SDK verwenden will.

@dot Das Problem bei DirectX 11 ist, dass es nur auf bestimmten Grafikkarten ( wie ich arbeitet DirectX 10 HLSL 4.1 xD ) kannst du DirectX 11 mit HLSL 5 vergessen.

Direct3D 11 läuft problemlos auf Direct3D 9 Hardware. Das einzige, was es dazu braucht, ist Windows >= Vista. ;)

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »dot« (11.02.2013, 18:23)


Maxolia

unregistriert

8

11.02.2013, 18:17

Doch ich habe alles eingebunden.
Hast du nicht, sonst hättest du den Fehler nicht.
Bor ,meine Güte ich habe dem Compiler unter Linker->Eingabe gesagt, dass er die beiden Lib´s Linken soll!
und aus irgend einem Grund macht er das nicht.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

11.02.2013, 18:20

In dem Fall müsste der Linker dir normalerweise mehr als nur diese eine Fehlermeldung präsentieren. Z.B. dass er eine der angegebenen .lib Dateien nicht finden kann. Basierend auf der momentanen Informationslage, kann man dir jedenfalls leider nur sagen, dass du d3d9.lib nicht gelinked hast...

Techie

Alter Hase

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

10

11.02.2013, 18:23

Vielleicht auch richtig gemacht? Auf Ok gedrückt?


@Dot ja schon, aber des wird emuliert. Das ist so langsam. ich könnte jedes Pixel selbstberechnen.... :|
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Werbeanzeige