C/C++ SDL Video-Player



  • Also zuerst einmal ein paar basics:
    Ich und mein Kollege wollen für eine Abitur-Diplomarbeit (besuchen eine Höhere Technische Lehranstalt für IT) ein MediaCenter Programmieren. Wir wollen eine Heimkinoanlage an einen PC(Server) anschließen. Und als Client würden wir ein HTC TD2 bzw Topaz(WindowsMobile) benützen. Unter dem grundgedanken eine Fernbedienung von der ganzen Mediendatenbank zu haben.

    Wir haben zur Zeit jetzt gute Erfahrungen in C Java und C#, wollen jedoch dieses Projekt wegein Performancegründen hauptsächlich mit C++ mit SDL Programmieren.

    Der Videoplayer jedoch bringt uns zum grübeln...
    Wir haben da etwas von VLC gefunden:
    http://wiki.videolan.org/LibVLC_SampleCode_SDL
    Das ist jedoch C.

    Abgesehen davon, dass wir uns noch nicht mit der libVLC auseinandergesetzt haben, wissen wir nicht ob uns, dass überhaupt weiterhilft.

    Auch wenn ich mir jetzt wie ein NOOB vorkomme .g. zur Kernfrage:
    Können wir C mit C++ kombinieren? Wenn ja wie?

    Wir sind für jeden Tipp Dankbar!

    MfG



  • Hown schrieb:

    Können wir C mit C++ kombinieren?

    Ja.

    Hown schrieb:

    Wenn ja wie?

    Einfach so. Den C-Code in den C++-Code schreiben.



  • Ok. Klingt logisch.

    Dann versteh ich jetzt nicht warum dieser sample Code
    http://wiki.videolan.org/LibVLC_SampleCode_SDL
    in unserem Visual Studio zu massenhaft Syntax Errors führt und wenn ich dann beim File angib dass er das als C Compilieren soll und nicht als C++ die meißten Errors verschwinden. ?!???

    MfG



  • zeig mal ein paar der Fehlermeldungen 🙂



  • OK.

    Der erste Fehler ist in der

    sdl_config_win32.h

    #elif defined(_MSC_VER)
    [b]typedef signed __int8[/b]		int8_t;
    ...
    

    error C2371: 'int8_t': Neudefinition; unterschiedliche Basistypen

    Error2 ist jetzt in meinem File:

    ...
    struct ctx
    {
        SDL_Surface *surf;
        SDL_mutex *mutex;
    };
    
    [b]static void catch (libvlc_exception_t *ex)[/b]
    {
        if(libvlc_exception_raised(ex))
        {
            fprintf(stderr, "exception: %s\n", libvlc_exception_get_message(ex));
            exit(1);
        }
    
        libvlc_exception_clear(ex);
    }
    ...
    

    In der Zeile

    static void catch (libvlc_exception_t *ex){
    

    :
    error C2059: Syntaxfehler:'<catch-error>'
    error C2143: Syntaxfehler: Es fehlt; vor }

    MfG



  • Tztztz... copy&paste von Source-Code ist aber nicht die feine englische Art. 😉 catch ist ein Keyword in C++ und darf nicht als individueller Name für Funktionen, Variablen, ... benutzt werden.



  • oke zweite fehler ist wegg und damit auch die restlichen 22 ..

    gibts das, dass catch ein Vordefiniertes keyword ist in c++ und in c noch nicht? 😮

    habe einfach catch durch catchex ersetzt

    jetzt hab ich nur noch den fehler in der sdl_config_win32.h

    MfG



  • Error 2: "catch" ist ein reserviertes Schluesselwort von C++, du darfst deine Funktion nicht auch so nennen.

    Error 1: irgendwo wurde ein anderer Typ auch schon als "int8_t" getypedeft. Genaueres kann ich dir dazu allerdings auch nicht sagen.



  • Hown schrieb:

    gibts das, dass catch ein Vordefiniertes keyword ist in c++ und in c noch nicht? 😮

    Natürlich, C++ ist eine Erweiterung von C, und nicht andersherum. try und catch sind für Exceptions zuständig, und die gibt es in C nun mal nicht.



  • Jo ist mir klar 😉

    Jetzt habe ich 13 link errors...

    error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_libvlc_release" in Funktion "_SDL_main".
    error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_libvlc_media_player_release" in Funktion "_SDL_main".
    ...
    

    usw.

    Meine zusätzlichen Abhängikeiten sind:
    SDL.lib SDLmain.lib SDL_image.lib SDL_ttf.lib

    Denke ich richtig wenn ich da jetzt noch einige .libs von vlc brauche 😮

    MfG



  • hast du die libVLC auch mitgelinkt?



  • Heinzelotto schrieb:

    hast du die libVLC auch mitgelinkt?

    Nein, da ich nicht genau weiß wie die .lib heißt/heißen!

    Ich finde auch auf der wikivlc seite irgendwie keine Info darüber.
    Mby weil ich mich einfach nicht zurechtfinde!
    http://wiki.videolan.org/



  • oke.. Ich habe jetzt eine libvlc.lib vom itnernet gefunden.. dann in den ordner libs vom visual stuido reinkopiert..

    Danach die lib gelinkt!

    habe jedoch trotzdem noch die selben fehlermeldungen!!!



  • Hallo,
    ich befasse mich mit dem gleichen Thema und dachte ich greif das hier mal wieder auf. Bei mir compiliert das ganze soweit mitlerweile, jedoch bekomme ich noch ein paar warnungen

    1>------ Neues Erstellen gestartet: Projekt: VLC SDL TEST, Konfiguration: Debug Win32 ------
    1>Die Zwischen- und Ausgabedateien für das Projekt "VLC SDL TEST" mit der Konfiguration "Debug|Win32" werden gelöscht.
    1>Kompilieren...
    1>SDLVIDTEST.cpp
    1>.\SDLVIDTEST.cpp(139) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>        C:\Programme\Microsoft Visual Studio 8\VC\include\stdio.h(345): Siehe Deklaration von 'sprintf'
    1>.\SDLVIDTEST.cpp(140) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>        C:\Programme\Microsoft Visual Studio 8\VC\include\stdio.h(345): Siehe Deklaration von 'sprintf'
    1>.\SDLVIDTEST.cpp(141) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>        C:\Programme\Microsoft Visual Studio 8\VC\include\stdio.h(345): Siehe Deklaration von 'sprintf'
    1>.\SDLVIDTEST.cpp(142) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>        C:\Programme\Microsoft Visual Studio 8\VC\include\stdio.h(345): Siehe Deklaration von 'sprintf'
    1>.\SDLVIDTEST.cpp(143) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>        C:\Programme\Microsoft Visual Studio 8\VC\include\stdio.h(345): Siehe Deklaration von 'sprintf'
    1>.\SDLVIDTEST.cpp(144) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>        C:\Programme\Microsoft Visual Studio 8\VC\include\stdio.h(345): Siehe Deklaration von 'sprintf'
    1>Verknüpfen...
    1>libvlc.lib(d000029.o) : warning LNK4078: Mehrere .text-Abschnitte mit unterschiedlichen Attributen gefunden (E0300020).
    1>SDLVIDTEST.obj : warning LNK4248: Nicht aufgelöstes Typeref-Token (01000012) für "libvlc_instance_t". Das Abbild kann möglicherweise nicht ausgeführt werden.
    1>SDLVIDTEST.obj : warning LNK4248: Nicht aufgelöstes Typeref-Token (01000013) für "libvlc_media_t". Das Abbild kann möglicherweise nicht ausgeführt werden.
    1>SDLVIDTEST.obj : warning LNK4248: Nicht aufgelöstes Typeref-Token (01000014) für "SDL_mutex". Das Abbild kann möglicherweise nicht ausgeführt werden.
    1>SDLVIDTEST.obj : warning LNK4248: Nicht aufgelöstes Typeref-Token (01000015) für "libvlc_media_player_t". Das Abbild kann möglicherweise nicht ausgeführt werden.
    1>Das Manifest wird eingebettet...
    

    soweit schon komisch sag ich mal.. aber was soll man machen wenn dann das Programm startet fliegt er sofort auf die Nase, den Haltepunkt in der main erreicht er gar nicht mehr...

    Die Anwendung konnte nicht richtig initialisiert werden (0x000007b). Kilicken sie auf OK um die Anwendung zu beenden..........
    

    Ich hoffe ihr könnt uach mir nochmal helfen danke schonmal 🙂


Anmelden zum Antworten