C++ SDK in VB konvertieren

  • Allgemein

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von Lightsource.

    C++ SDK in VB konvertieren

    Hier kann man sich das SDK von dem 3D Grafikprogramm TrueSpace herunter laden.
    cdn.caligari.com/download/sdk_tS761B8.zip

    Leider ist das ganze natürlich in C++ .

    Gibt es irgendwo eine Beschreibung wie man so etwas für VB umsetzen kann,
    oder wie man es von VB aus ansprechen kann?

    Leider kenne ich mich mit C++ überhaupt nicht aus.
    Das ist natürlich ein großes Hindernis. ;(
    nimm doch gleich das originale ;)
    microsoft.com/DOWNLOADS/detail…01d8e8b4ef&displaylang=en
    das ist extra eine ältere Version, da bei den neueren auch nur noch C++ Examples sind...Übersetzen könnte man das ganze von C++ aus nur, wenn man das bereits in VB kann ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    ne war wohl eher mein Fehler...
    Hier kann man sich das SDK von dem 3D Grafikprogramm TrueSpace herunter laden.

    da hab ich nur kombiniert und bin dann Aufgrund von 3D auf DirectX gekommen^^(Aber warum nur teils DirectX? Ein 3D Programm verwendet für alle 3D Visualisierungen DirectX oder OpenGL(XNA zählt nicht, da dieses auf DX aufbaut und nur eine Art Engine ist...) - seltenst etwas eigenes - und etwas von einer Kombination habe ich weder gesehen noch gelesen)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    jvbsl schrieb:

    da hab ich nur kombiniert und bin dann Aufgrund von 3D auf DirectX gekommen^^(Aber warum nur teils DirectX? Ein 3D Programm verwendet für alle 3D Visualisierungen DirectX oder OpenGL(XNA zählt nicht, da dieses auf DX aufbaut und nur eine Art Engine ist...) - seltenst etwas eigenes - und etwas von einer Kombination habe ich weder gesehen noch gelesen)
    Das "teilweise" bezog ich nur auf die Ausgabe auf den Bildschirm. TS verwendet DirectX und OpenGL für alle 3D artigen
    Darstellungen. Wenn die Erstellung von Szenen fertig ist, dann wird gerendert. Das geschieht wiederum mit anderen Engines.

    Das geht aber jetzt zu weit vom Thema weg..

    Geht das nur mit Plugins?
    TrueSpace wird keine .NET dlls laden können.
    TS kann man auch mit Java-Script und VB-Script steuern. Jedoch mit diversen Einschränkungen.
    So weit ich erfahren habe wird C++ benötigt um mit ATL arbeiten zu können. Die Frage für mich als
    VB-Programmierer ist allerdings, ob das alles unbedingt nötig ist.
    Die C++ Plugins (dazu wird eigentlich nur die DLL in das entsprechende TS Plugin um benannt)
    greifen ja schließlich auch nur auf irgendwelche DLLs zu. Das sollte mit VB.Net - VB2008 doch
    auch irgendwie gelingen.
    Hierzu wäre es natürlich notwendig die ganzen Definitionen, Enumerationen und was es sonst
    so alles gibt, das in den Header-Dateien steht, in VB um zu setzen. Wie man das aber macht
    ist hier immer noch meine Frage
    . Und ich denke, dass diese Frage in irgend einer Form hier
    oder sonst wo schon behandelt wurde, und auch von allgemeinem Interesse ist.
    Ich habe schon nach solchen Sachen gesucht, aber leider nichts Verständliches für mich gefunden.
    Am einfachsten wäre es ja, wenn man die Header-Dateien irgendwie in VB2008 direkt verwenden
    könnte. VS lässt sich doch umschalten von VB nach C.
    Vielleicht gibt es ja eine einfache Möglichkeit.

    Tsuyo schrieb:

    Da das Programm wohl in C++ geschrieben ist, kannst du auch nur C++ Dlls als Plugin nutzen.

    Das Programm ist in C++2005 geschrieben. Aber warum sollte es nur mit C++ Dlls arbeiten können?
    Ich nehme einfach mal an, dass man mit C++ auf die Win API zugreifen kann. Das kann man auch
    mit VB6 bis VB10. Warum also sollte es da einen Unterschied geben?
    Und sollte es denn nicht möglich sein, eine VB Dll in eine C++ Dll umzuwandeln?

    Das musst du mir erst erklären warum und wieso du diese Meinung hast ...
    .NET ist auf "Standart C++" nicht kompatibel. Es geht einfach nicht. In welchem C++ ist TrueSpace geschrieben? Visual C++ mit .NET oder wirklich das richtige C++?
    Falls zweiteres, wird es nicht gehen. Man kann halt mit C++ keine .NET Dlls laden. Ist so. Das Thema gabs hier im Forum übrigens schonmal.
    Bevor du C++ Code in VB umschreibst, würde ich an deine Stelle mich mit 3D ausseinandersetzen und mir selber Klasse in VB NET schreiben.
    Da bin ich viel schneller als bis du deine C++ Code umgeschrieben hast. Ich habe das Projekt mir nicht angeschaut, bin mir aber sicher, das da viele APIs, Strukuturen und Constanten sind. Denk dran mit APis in VB NET ist nicht mehr so einfach wie in VB6 Zeiten, da muß auf vieles achten z.b auf Zeiger, Referenzen und richtige Deklarationen. Bis du der Code umschreibst wird noch paar Tage oder sogar paar wochen vergehen. Solltest du schafen der Code in VB NET konvertieren, ich kann mit dir um alles wetten, da kommen noch zig fehler, die du dann beheben muß. Mein rat, lernen selber und schreib dir eigene Klasse.

    SystemUnknow schrieb:

    Ich habe das Projekt mir nicht angeschaut, bin mir aber sicher, das da viele APIs, Strukuturen und Constanten sind.
    Danke SystemUnknow
    Ja, so ist es. Mich interessiert halt wie man so etwas für VB umsetzt.
    Ich bin mir sicher, dass sich jemand schon mal mit diesem Thema beschäftigt hatte.
    Ich bräuchte halt irgend ein Tutorial oder eine Beschreibung wie man da vorzugehen hat.
    Und von wegen es würde gar nicht gehen, das ist etwas, dass kann ich überhaupt nicht
    akzeptieren. Es ist immer eine Frage der Aufwands und nicht der Unmöglichkeit.
    Danke, das ist ja zumindest mal ein Anfang. Mit Windows Messages? Ist ja mal ein interessanter Ansatz. 8-)

    API View für Net?
    Da werde ich mich erst mal auf die Suche machen müssen. In dem oben erwähnten Tut ist ja die Rede
    davon, dass es so etwas nicht gäbe.
    Ich meine DLLs von VB Net ansprechen geht ja so irgendwie, aber wie ist es mit den ganzen
    Deklarationen in den C-Headerfiles, kennt sich da jemand aus? Ich weiß hier gibt es bestimmt nur VB
    Spezialisten und keine C-Freaks. :rolleyes:

    SystemUnknow schrieb:

    C/C++ Header Fils VB NET anbinden oder aufrufen wird nicht gehen !

    Das verstehe ich schon, darum auch meine Frage wie man so etwas konvertieren muss.

    So etwas:

    C-Quellcode

    1. #include "_Kernel.h"
    2. #include "_CommonData.h"
    3. #include "_Anim.h"
    4. #include "_Avatar.h"
    5. #include "_CharacterEditor.h"
    6. #include "_FileIO.h"


    verstehe ich ja noch, aber so etwas:

    Quellcode

    1. #define OBJECTTYPE_UNKNOWN GUID_NULL
    2. // {DB600B08-4A38-44b5-A3D6-68812E24A61D}
    3. RS_DEFINE_GUID(OBJECTTYPE_MESH,
    4. 0xdb600b08, 0x4a38, 0x44b5, 0xa3, 0xd6, 0x68, 0x81, 0x2e, 0x24, 0xa6, 0x1d);
    5. // {B2160AB4-68DD-44b6-BD8E-303FF910BC87}
    6. RS_DEFINE_GUID(OBJECTTYPE_LIGHT,
    7. 0xb2160ab4, 0x68dd, 0x44b6, 0xbd, 0x8e, 0x30, 0x3f, 0xf9, 0x10, 0xbc, 0x87);
    8. // {A4D40B51-FAEB-4b50-92F0-40585F05FB2B}
    9. RS_DEFINE_GUID(OBJECTTYPE_CAMERA,
    10. 0xa4d40b51, 0xfaeb, 0x4b50, 0x92, 0xf0, 0x40, 0x58, 0x5f, 0x5, 0xfb, 0x2b);


    Da steht mein Verstand in Ehrfurcht davor. :wacko:
    Da habe ich keine Ahnung was das ist, geschweige denn
    wie man das übersetzen müsste.
    einfach die Semikolons am Ende entfernen und // durch ' ersetzen statt #define verwendest du einfach eine normale Variable(Private name As Type), dann hast du schonmal ne ganze menge...jedoch musst du auch alle headerDateien übersetzen, da dies ja wohl auf Methoden zurückgreift, welche du nicht definiert hast...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---