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

Christian

Frischling

  • »Christian« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Ludwigshafen

Beruf: Schüler

  • Private Nachricht senden

1

04.04.2007, 16:04

TriBase-Engine: Fehler in der TriBase.h ?

Hi ich habe mir das Buch von David Scherfgen als Einstieg in die 3D Spieleprogrammierun gekauft, folglich stehe ich jetzt noch am Anfang der 3D Spieleprogrammierung mit DirectX und bin noch unerfahren.
Fundierte Kenntnisse mit C++ und grundlegende Kenntnisse der WinAPI habe ich und möchte mich, als nächstes nahe gestecktes Ziel, zunächst einmal in Direct3D einarbeiten, soweit, dass ich mein erstes Dreieck auf den Bildschirm zeichnen kann. Ich denke das Buch war echt keine schlechte Wahl aus meiner Sicht als Leihe, die Inhalte hören sich sehr vielversprechend und interressant an!
So jetzt habt ihr ein grobes Bild von meinen Kenntnissen und Erwartungen, ist ja schließlich mein erster Beitrag hier, da wollte ich mich eben mal vorsstellen. Jetzt zu meinem Problem:

Ich benutze die Autorenedition von Visual C++ 6.0 und habe die benötigten Einstellungen in der IDE vorgenommen, also den Include und Lib Pfad von der TriBase Engine angegeben und nachdem ich ein Projekt erstellt habe, hab ich im Projekt die TriBaseD.lib und TriBase.lib hinzugefügt.

Jetzt wollte ich eine kleine Anwendung schreiben, die einfach nur die TriBase-Engine Initialisiert. Hier habe ich schon lange überlegt wo ich nun die Funktion tbInit() aufrufen soll: Eine Konsolen-Anwendung oder eine Windows-Anwendung mit einem einfachen Fenster?
Ich habe mich hier für eine Windows-Anwendung entschieden und die tbInit() Funktion in der WinMain aufgerufen. Dazu muss ich ja die TriBase.h mit #include einbinden, wenn ich dann das Programm kompilieren will bricht der Kompiler ab und spuckt mir zwei Fehlermeldungen aus:

Quellcode

1
2
error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'HSEMAPHORE'
fatal error C1004: Unerwartetes Dateiende gefunden 

Diese Fehler werden in der TriBase.h an folgender Stelle angezeigt:

Quellcode

1
typedef DWORD_PTR HSEMAPHORE; (Zeile 1018) 

Hat wer von euch schon denselben Fehler gehabt? Ich kann jetzt schlecht die TriBase.h durchforsten und auf Fehlersuche gehen, dazu kenn ich mich zu wenig aus und ich denke es liegt wahrscheinlich nichteinmal an der TriBase.h sondern an einem anderen Fehler, sonst wäre ich doch sicherlich bei der Forumsuche fündig geworden, weil der Fehler häufiger aufgetreten wäre. Also ich hoffe ihr könnt mir hierbei weiterhelfen, ich hab nach eigenem ermessen sowieso etwas Einstiegsprobleme in das Thema und möchte nicht schon bei der Initialisierung der Engine scheitern ;)

Gruß Christian.

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

2

04.04.2007, 17:36

Das Problem ist das die in der Tribase verwendete DirectX-Version(speziell DirectSound) nicht mehr zu Vc++ 6 kompatibel ist. (Soweit ich weoß gabs dazu auch schon ne menge threads...such einfach mal nach vc++ 6).
Am besten holst du dir vc++ 8 ee, die is kostenlos und aktuell...

Christian

Frischling

  • »Christian« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Ludwigshafen

Beruf: Schüler

  • Private Nachricht senden

3

06.04.2007, 17:11

Danke Firefly!
Ich habe deinen Rat angenommen und mir die neue IDE heruntergeladen und dazu gibts ja hier im Forum eine super Anleitung wie man dort die TriBase-Engine zum laufen bekommt.
Jetzt verwende ich die DirectX February 2007 SDK und verwende die vorkompilierten TriBase Dateien, welche man auch hier auf der Seite findet. Soweit funktoniert alles (ein großes Dankeschön an David und alle die sich mit dem Problem TriBase&VC++ 8 beschäftigt haben), jetzt kanns losgehn! :p

Christian

Frischling

  • »Christian« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Ludwigshafen

Beruf: Schüler

  • Private Nachricht senden

4

06.04.2007, 18:27

Hm also ich war etwas voreilig.
Ich wollte jetzt eine einfache Anwendung schreiben, die einfach nur die TriBase-Engine Initialisiert. Hier mein Code:

Quellcode

1
2
3
4
5
6
7
8
9
10
#include <windows.h>
#include <TriBase.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPSTR lpCmdLine, int nShowCmd)
{
    tbInit();

return (0);
}


Kompilieren kann ich ohne Fehler und Warnugen, beim Erstellen jedoch bekomm ich folgende Fehler:

Quellcode

1
2
3
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbInit(void)" (__imp_?tbInit@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".

fatal error LNK1120: 1 nicht aufgelöste externe Verweise.


Dann wollte ich noch eine Anwendung ohne die TriBase-Engine schreiben (Ein einfaches Fenster erstellen) und habe dazu den Code genommen, der unter VC++ 6 immer funktioniert hat und es gab auch hier 10 Fehlermeldungen wegen nicht aufgelösten Symbolen und Verweisen.

Da hab ich wohl doch etwas vergessen beim hinzufügen der Include und Lib Pfade in der IDE? Oder muss ich beim aktuellen Projekt noch etwas hinzufügen? Wenn ja bitte schreibt mir wie man das macht, ich habe noch nicht so den Durchblick mit der neuen IDE .

Bye Christian.

Christian

Frischling

  • »Christian« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Ludwigshafen

Beruf: Schüler

  • Private Nachricht senden

5

06.04.2007, 19:23

Hier poste ich mal meine Fehlermeldungen, die ich bekomme, wenn ich einfach nur ein Fenster erstellen will ohne spezielle Funktionen (am Code ist nichts falsch, ging bevor ich VC++ 8 hatte immer!). Es handelt sich um den Linkerfehler LNK2019, wie schon erwähnt:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
------ Erstellen gestartet: Projekt: WIN_BASIC, Konfiguration: Debug Win32 ------
Verknüpfen...
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__PostQuitMessage@4" in Funktion ""long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DefWindowProcA@16" in Funktion ""long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DispatchMessageA@4" in Funktion "_WinMain@16".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__TranslateMessage@4" in Funktion "_WinMain@16".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetMessageA@16" in Funktion "_WinMain@16".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__CreateWindowExA@48" in Funktion "_WinMain@16".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__RegisterClassExA@4" in Funktion "_WinMain@16".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__LoadCursorA@8" in Funktion "_WinMain@16".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__LoadIconA@8" in Funktion "_WinMain@16".
C:\Info\WIN_BASIC\Debug\WIN_BASIC.exe : fatal error LNK1120: 9 nicht aufgelöste externe Verweise.
Das Buildprotokoll wurde unter "file://c:\Info\WIN_BASIC\WIN_BASIC\Debug\BuildLog.htm" gespeichert.
WIN_BASIC - 10 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Kann mir wer sagen warum ich diesen LNK2019 bekomme?? Ich habe doch sicherlich irgendetwas noch nicht oder falsch an meiner IDE eingestellt? Bin froh über jede Hilfe!

Bye Christian.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

7

07.04.2007, 08:23

kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
wenns nicht nur an der user32-lib lag hier noch die komplette liste...

Christian

Frischling

  • »Christian« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Ludwigshafen

Beruf: Schüler

  • Private Nachricht senden

8

07.04.2007, 14:16

Vielen Dank an euch beide!!!
Schön, dass ihr mir als Neuling sofort geholfen habt, eure Mühe hat sich gelohnt, ich habe jetzt alles soweit eingerichtet, dass ich loslegen konnte und die Grundfunktionen der TriBase-Engine (Kapitel1 im Buch) üben konnte.

Ich habe in der Zeit, in der bei mir noch die Linkerfehler aufgetreten sind schonmal den theoretischen Teil in Kapitel2 über Vektoren und Matrizen gelesen (haben wir noch nicht in der Schule gemacht) und bin bis jetzt super zufrieden mit dem Buch! :D

Bye Christian

Werbeanzeige