SFML - Audio in DLL bringt Warnungen hervor.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • SFML - Audio in DLL bringt Warnungen hervor.

    Hiho!
    Ich baue mir gerade eine Engine zusammen und fange da beim Sound an, denn der ist ja noch verhältnismäßig klein.

    Nun gibt es ein kleines Problem, als es um den Sound geht. Ich binde also in meinem DLL-Projekt die SFML ein, schreibe erstmal das Alles mit der Musik, noch nicht die Sound-Effekte.
    Nun kommt da aber so ein toller Compilerfehler heraus, es lässt sich debuggen, auch im release-Modus. Aber die Warnung beunruhigt mich, dass ein Teil/die ganze DLL nicht funktioniert.
    Kann mal jemand drüber schauen? Oder mir eine Möglichkeit sagen um sich "die eigene Engine ohne SFML" schreibt? ;] Aber das wäre vielleicht für manche Bereiche noch etwas zu hoch hinaus gegriffen.... :/

    Fehler:
    1>------ Erstellen gestartet: Projekt: Audio, Konfiguration: Debug Win32 ------
    1> Audio_Datei.cpp
    1>c:\users\matthis\desktop\audio\audio\audio_header.hpp(16): warning C4251: 'lwtAudio::Audio::m': class 'sf::Music' erfordert eine DLL-Schnittstelle, die von Clients von class 'lwtAudio::Audio' verwendet wird
    1> c:\users\matthis\desktop\time of war\sfml\sfml-1.6\include\sfml\audio\music.hpp(47): Siehe Deklaration von 'sf::Music'
    1> Bibliothek "C:\Users\Matthis\Desktop\Audio\Debug\Audio.lib" und Objekt "C:\Users\Matthis\Desktop\Audio\Debug\Audio.exp" werden erstellt.
    1> Audio.vcxproj -> C:\Users\Matthis\Desktop\Audio\Debug\Audio.dll
    ========== Erstellen: 1 erfolgreich, Fehler bei 0, 0 aktuell, 0 übersprungen ==========

    Code:

    Quellcode

    1. Audio Datei.cpp:
    2. #include "Audio_Header.hpp"
    3. //File initialisieren
    4. DLL_AUDIO_API void lwtAudio::Audio::Init(sf::Music m)
    5. {
    6. //File Laden
    7. if(!m.OpenFromFile("music\\music.ogg")) // Hinweis: Wird noch zu einem String, musste Programm neu starten.... '-.-
    8. exit (3);
    9. }
    10. //Play
    11. DLL_AUDIO_API void lwtAudio::Audio::Play(sf::Music m)
    12. {
    13. //File abspielen
    14. m.Play();
    15. }
    16. //Stop
    17. DLL_AUDIO_API void lwtAudio::Audio::Stop(sf::Music m)
    18. {
    19. //File stoppen
    20. m.Stop();
    21. }
    22. //Pause
    23. DLL_AUDIO_API void lwtAudio::Audio::Pause(sf::Music m)
    24. {
    25. //File pausieren
    26. m.Pause();
    27. }
    Alles anzeigen

    Quellcode

    1. Audio Header.hpp:
    2. #include "Audio.hpp" //Hauptdatei einbinden
    3. #include <SFML\Audio.hpp> //SFML-Audio
    4. #include <SFML\System.hpp> // SFML-System
    5. //Starten des Namepaces "Audio"
    6. namespace lwtAudio
    7. {
    8. class DLL_AUDIO_API Audio
    9. {
    10. public:
    11. void Init (sf::Music m);
    12. void Play (sf::Music m);
    13. void Stop (sf::Music m);
    14. void Pause(sf::Music m);
    15. private:
    16. sf::Music m;
    17. };
    18. }
    Alles anzeigen

    Quellcode

    1. Audio.hpp:
    2. #ifndef DLL_AUDIO //Start des "Waechters"
    3. #define DLL_AUDIO //Erstellung
    4. #if _USRDLL // Importieren+Exportieren der DLL
    5. #define DLL_AUDIO_API _declspec(dllexport)
    6. #else
    7. #define DLL_AUDIO_API _declspec(dllexport)
    8. #endif
    9. #endif
    Alles anzeigen


    Danke!
    MfG
    Check

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Checkmateing ()

  • Laut SFML kannst du diese Warnung ignorieren, da das anscheinend trotzdem funktioniert.

    Wenn du das ganze Dynamisch Verlinkst, also mit der sfml-audio.dll (sfml-audio-d.lib), kannst du dem Präprozessor SFML_DYNAMIC übergeben oder halt im Quellcode bevor du eine SFML Headerdatei einbist mit defnieren:

    Quellcode

    1. #define SFML_DYNAMIC


    Ansonsten wenn es nicht weggeht und es dich stört einfach selbert mit
    #pragma warning(disable : 4251)
    im Quellcode deaktivieren.

    Mfg Rushh0ur