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

28.07.2010, 15:00

Visual C++ hängt sich beim "Verknüpfen..." auf

Hallo Zusammen,
ich habe das Buch erst seid kurzem und habe mich heute das erste mal wirklich dran gewagt und bin leider schon auf viele Probleme gestoßen, bisher konnte ich alle lösen (Teilweise auch durch dieses Forum, schonmal Danke dafür! :D) aber jetzt komme ich nicht mehr weiter. Und zwar scheitere ich an der ersten Übungsuafgabe des Buches (1.4.7). Der Code mit dem ich es probiert habe ist eigentlich denkbar einfach:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <Windows.h>
#include <TriBase.h>


int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   char* pcCmdLine,
                   int iShowCmd)
{
    // TriBase-Engine initialisieren
    tbInit();

    char* pcString = "Warum funktioniert das nicht?";
    tbWriteToLog("Ich frag mich, %s", pcString);

    // Engine herunterfahren
    tbExit();

    return 0;
}


Ich bin mir jedoch nicht sicher ob er stimmt (ist es zum Beispiel richtig WinMain zu benutzen, oder sollte man den code an dieser sTelle noch Windows unabhängig gestallten?). Wenn ich den Code kompiliere kommt jedenfalls keine Fehlermeldung, stattdessen scheint sich das Programm beim Punkt "Verknüpfen..." aufzuhängen! Auch nach längerer Zeit rührt sich das Programm nicht und wenn ich versuche den Vorgang abzubrechen hängt es sich völlig auf. Ich denke ich habe die Engine und das SDK korrekt eingebunden und auch die TriBase.lib in den Projekt-Eigenschaften vermerkt, ansonsten müsste ja auch zumindest eine Fehlermeldung kommen. Bin mit meinem Latein am Ende und langsam recht frustriert :( Vielleicht könnt ihr mir helfen?
Gruß
Armun

2

28.07.2010, 15:07

Also, den Code Windowsunabhängig zu machen, halte ich für nicht sinvoll, da du vorhast, mit einer DirectX - Grafikengine zu arbeiten, und damit sowieso auf Windows beschränkt bist ;) Das ist ein Seltsamer Fehler, hast du Schonmal Clear und Rebuild Probiert ?

3

28.07.2010, 15:34

Ok, Danke schonmal für die Antwort. Die Begriffe sagen mir so leider nichts, kannst du das vielleicht genauer erklären oder mir nen Link geben?
Es hört sich aber so an also sollte ich Visual C++ "reinstallieren"? Ich habe zur Zeit sowiso nur Visual C++ 2008, dann werde ich mal 2010 installieren und gucken ob es da besser klappt.
Gruß Armun

4

28.07.2010, 15:36

Nein, du brauchst es nicht Reinstallieren ;) Wenn du oben in der Menüleiste unter "Erstellen" Suchst, gibt es dort die Reiter "<dein Projektname> neu erstellen" und "<deinProjektname> bereinigen", das sollteste mal ausprobieren. Hast du denn die Tribaseengine unter VS2008 schon neu kompiliert ? Siehe dazu auch: Lösung: TriBase und Visual C++ 2005/2008 Express

5

29.07.2010, 12:46

Vielen Dank für die Antworten. Ich habe tatsächlich die TriBase-Engine noch nicht kompiliert :whistling: , jedoch stoße ich dabei nun auch wieder auf Probleme. Ich habe das Platform SDK bisher nicht nocheinmal extra runter geladen und installiert, da bei mir in Visual C++ bereits Verzeichnisse wie $(WindowsSdkDir)/include vorhanden waren. Beim Kompilieren der DShowBaseClasses bin ich jedoch auf Probleme gestoßen und wollte zunächst versuchen diese zu lösen indem ich das Platform-SDK eben installiere. Die Installation scheint aber fehlerhaft zu sein! :pinch: Ich habe versucht "Microsoft ® Windows Server® 2003 SP1 Platform SDK Web Install" von der Microsoftseite zu installieren, wie im Buch genannt nur die Core- und die DirectShow-Komponente. Die Installation endet jedoch immer mit der Fehlermeldung das er die Datei PSDK-SDK_Core_BLD-common.1.cab auf dem Microsoft-Server nicht bekommt(no access). Eine Internet-Recherche dazu hat leider nichts ergeben. Kann ich das Platform-SDK noch irgendwie anders beziehen, eine andere Version oder sowas?
Ganz abgesehen davon das Problem das ich beim kompilieren derDShowBaseClasses habe:
Zunächst einmal tue ich mich schwer mit dem Begriff "importieren". In der Anleitung zum Kompilieren der Engine von David Scherfgen die E122 gepostet hat sagt er, man soll das Projekt BaseClasses.sln importieren, heißt das etwas anderes als man soll es öffnen? Ich habe jedenfalls keinen Knopf zum importieren gefunden, es also lediglich geöffnet. Dann meldet sich der Visual Studio-Konvertierungs-Assistent, den ich durcklicke. Wenn der Assistent fertig ist, öffnet sich nichts. Wenn ich dann das nun konvertierte BaseClasses.sln (das Symbol hat sich schonmal verändert von 7.1 auf 9) öffne kriege ich die Fehlermeldung "Für VC++-Projekte sind keine IntelliSense-Informationen verfügbar, da die IntelliSense-Datenbankdatei "C:\TriBase\Include\DShowBaseClasses\BaseClasses.ncb" schreibgeschützt ist. Wenn das Projektmappenverzeichnis schreibgeschützt ist, sind davon weitere Features betroffen.". Diese Datei ist aber nicht schreibgeschützt ?(
Kann jemand helfen?
Gruß
Armun

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

6

29.07.2010, 13:01

Hallo erstmal! ;)
Du bist ja, genau wie ich erst sehr kurz hier, also Herzlich Willkommen! :thumbsup:

Zuerst habe ich mal ein paar Frage und muss dir etwas sagen, bevor ich glaube dir wirklich helfen zu können!

1. Mit .sln importieren ist wirklich nur öffnen gemeit!

2. Hast du wirklich alle Pfade in den Projekteinstellungen eingetragen?

3. Hast du die .lib einbindungen, wie in der Anleitung geändert?

4. Hast du den Quelltext, wie in der Anleitung geändert?

7

29.07.2010, 13:08

Hallo nochmal!

zu 2.: DirectX ist eingetragen, TriBase auch, Platform-SDK aus oben gennannten gründen eben nicht! Nur das vorab schon vorhandene $(WindowsSdkDir) ist drin.

zu 3.: Nein, da sich zunächst direkt der Konvertierungsassistent öffnet und sobald dieser fertig ist ich das Projekt nicht mehr öffnen kann

zu 4.: Ebenfalls nicht, ich kriege ihn ja nie zu Gesicht!

Ich hoffe jetzt kannst du mir helfen ^^
Gruß
Armun

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

8

29.07.2010, 13:15

Nochmal eine Frage...

Erkläre nochmal genau, wie du bei der Konvertierung des Projektes vorgehst! Dass du das Projekt nach der Konvertierung nicht mehr öffnen kannst habe ich nämlich übersehen :whistling:
Und...
Das SDK von dem du da erzählst reicht meines wissens nach nicht aus!
Installiere doch mal das Microsoft SDK von der CD!

9

29.07.2010, 13:23

Beim Konvertieren habe ich garnicht viel Auswahl was ich tun möchte. Der Assistent öffnet sich sofort nachdem ich BaseClasses.sln geöffnet habe mit einer Willkommensnachricht, dann kann ich wählen ob ich eine SIcherungskopie vor der Konvertierung haben möchte und dann kommt eine "Zusammenfassung" in der etwas über Quellcodeverwaltung steht und wie er die Konvertierung durchführen möchte. Dann muss ich auch schon auf Fertigstellen drücken. Nach der Konvertierung sagt er alles erfolgreich konvertiert, jedoch mit einigen Warnungen und fragt ob ich das Protokoll einsehen möchte. Das wars.
Das Platform-SDK ist auf der CD leider nicht enthalten, lediglich das DirecX-SDK.

Gruß
Armun

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

10

29.07.2010, 13:36

Jaja, die Kovertierung ist sehr knapp gehalten! :lol:
bei mir kunktioniert es eigentlich immer! Ich drücke gleich beim ersten Fenster auf Finish und die anderen Fenster einfach weg und kann dann anfangen am Projekt zu arbeiten! ;)
Und bist du dir ganz sicher, dass das SDK nicht auf der CD drauf ist. Bei mir wars drauf. (Ich habe das Buch 3D Spieleprogrammierung mit der TriBase-Engine Ausgabe 2006 glaube ich) Wenn du eine ältere Auflage hast, musst du es dir vielleicht runterladen! ;)

Werbeanzeige