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

CeDoMain

Alter Hase

  • »CeDoMain« ist der Autor dieses Themas

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

1

05.10.2013, 15:16

Verwalteter C++ Code funktioniert nicht mit TriBase-Engine

Hallo Community,

ich habe Davids Buch zur DirectX-Spieleprogrammierung durchgelesen und wollte jetzt mal anfangen ein eigenes Spiel zu programmieren.

Weil ich NBT-Dateien einlesen muss, habe ich mir den Quellcode für eine dazu fähige Klasse heruntergeladen.
Sie ist fehlerfrei und ich habe sie auch mit einem CLR-Projekt getestet.
Die TriBase-Engine läuft auch, denn die Projekte aus dem Buch lassen sich ausführen. Sehr schöne Spiele David!

Mein Problem: Die Kombination.

Ich habe die aktuelle CD-Version heruntergeladen und ein neues Win32-Projekt wie angegeben erstellt.
Der Konfigdialog wird gestartet und die Engine "Initialisierung ist erfolgreich".
Wenn ich dann auf das Projekt mit der NBT-Klasse (den Quellcode hab ich) verweise und in der Spielklasse eine Instanz erstelle, bekomme ich den Fehler, dass verwaltete Klassen nicht unterstützt werden.
Ist ja auch klar, weil bei einem Win32-Projekt CLR ausgeschaltet ist. Also erstelle ich ein "Leeres CLR-Projekt" und binde die TriBase-Engine ein.
Ich kann die Methoden der Engine alle aufrufen. Nur bekomme ich einen Fehler, dass die "COM-Initialisierung fehlgeschlagen" ist.

Funktioniert die Engine mit verwaltetem C++ Code nicht (Frage speziell an David Scherfgen - dem Programmierer der Engine)? Kann man das umgehen?

Ich benutze Visual C++ 2010 Express.
Ich habe schon zwei große Projekte mit Visual C++ fertiggestellt.

Wer Fragen zur Umgebung oder ähnlichem hat, möge sie stellen. Ich weiß nämlich nicht, welche für euch relevant sind.

Ich hoffe ihr könnt mir helfen.
Schonmal Danke für eure Antworten!

Gruß
CeDoMain
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

CeDoMain

Alter Hase

  • »CeDoMain« ist der Autor dieses Themas

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

2

06.10.2013, 20:28

Was ist Leute,

War meine Frage zu schwierig? Oder denkt ihr noch nach?

Gruß
CeDoMain
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

06.10.2013, 20:59

Ich glaube einfach mal, dass noch niemand je versucht hat David's Code aus einem Managed Context heraus zu verwenden. An Deiner Stelle würde ich auch eher eine native Klasse suchen, die die Files laden kann oder selbst eine bauen. Das Format ist immerhin bekannt.
Außerdem war gestern und heute Devmania. Da waren die meisten wohl sehr beschäftigt und eher weniger hier im Forum unterwegs.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

06.10.2013, 21:31

Wieso genau willst du die TriBase Engine aus C++/CLI heraus verwenden?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

06.10.2013, 21:53

Steht doch da, weil er eine Klasse gefunden hat, die Minecraft-Files lesen kann und die ist eben eine managed class.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

06.10.2013, 22:04

Ups, nicht genau genug gelesen :whistling:

Sich dafür das ganze .NET Framework als Abhängigkeit zu holen, wäre imo ein bissl verrückt...

Das hier z.B. sollte eine C++ Library für NBT Files sein: https://github.com/ljfa-ag/libnbtplusplus
Ansonsten würd ich mir überlegen, die Dateien in einem C# Programm einzulesen und die benötigten Infos in einem eigenen Format rauszuschreiben.

CeDoMain

Alter Hase

  • »CeDoMain« ist der Autor dieses Themas

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

7

07.10.2013, 20:12

Hey, danke für die schnellen Antworten und den Link!!!
Ich werde die Klasse sofort ausprobieren. Die ReadMe lässt es sehr vielversprechend aussehen. :thumbsup:

Aus reinem Interesse würde ich aber schon gerne wissen, ob man eine unmanaged Klasse in einem C++/CLI Programm verwenden kann und andersherum.
Speziell Davids Engine. ;)

Gruß
CeDoMain

PS: Woher wisst ihr, dass Minecraft NBT-Dateien verwendet? Gegoogelt oder schonmal was damit gemacht? :D
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

07.10.2013, 20:37

Google.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

08.10.2013, 00:27

Aus reinem Interesse würde ich aber schon gerne wissen, ob man eine unmanaged Klasse in einem C++/CLI Programm verwenden kann und andersherum.

Unmanaged Klasse in C++/CLI verwenden geht natürlich rein prinzipiell, genau das und sonst nichts ist überhaupt erst der ganze Sinn von C++/CLI. Umgekehrt geht nicht (einfach) direkt und wäre auch nicht sinnvoll...

CeDoMain

Alter Hase

  • »CeDoMain« ist der Autor dieses Themas

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

10

08.10.2013, 14:09

Unmanaged Klasse in C++/CLI verwenden geht natürlich rein prinzipiell, genau das und sonst nichts ist überhaupt erst der ganze Sinn von C++/CLI.
Warum bekomme ich dann von Davids Engine den Fehler: "COM-Initialisierung fehlgeschlagen" ?

Ohne C++/CLI Konfiguration bekomme ich ihn nicht und alles läuft.

C-/C++-Quelltext

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

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCommandLine, int iShowCommand)
{
    tbInit();                  //Hier tritt der Fehler auf

    tbConfig Config;           //Struktur in der die Ergebnisse des Configdialog gespeichert werden
    tbDoConfigDialog(&Config); //Aufruf des Dialogs

    tbExit();                  //Schließen der Engine

    return 0;
}
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

Werbeanzeige