2017-06-09 5 views
0

Ich schreibe einen einfachen Musik-Player und muss die Musik pausieren können, daher versuche ich die Microsoft :: DirectX :: AudioVideoPlayback-API zu verwenden, da PlaySound diese Funktionalität nicht unterstützt. Das Programm löst jedoch immer einen Haltepunkt aus und löst eine Ausnahme aus.Wie verwende ich Microsoft :: DirectX :: AudioVideoPlayback um Audio abzuspielen?

Also habe ich ein neues leeres Visual C++ CLR Empty Project mit einem leeren Formular erstellt und nur den Code hinzugefügt, um ein neues Audio-Objekt zu initialisieren und eine Audiodatei abzuspielen und ich bekomme immer noch die selbe Ausnahme. Die Zeile, in der das Problem auftritt, ist die Zeile, in der die neue Instanz des Audioobjekts erstellt wird.

Ich bin nicht sehr erfahren mit Visual Studio und ich habe diese API noch nie zuvor verwendet. Ich habe Verweise auf Microsoft :: DirectX- und Microsoft :: DirectX :: AudioVideoPlayback-DLL-Dateien zum Projekt hinzugefügt, die Audiodatei befindet sich im Verzeichnis. Ich habe ein paar Dinge ausprobiert, die ich online gefunden habe, aber nichts hat funktioniert. Jede Hilfe würde sehr geschätzt werden!

Hier ist die myForm.h Datei:

#pragma once 

namespace Project3 { 

using namespace System; 
using namespace System::ComponentModel; 
using namespace System::Collections; 
using namespace System::Windows::Forms; 
using namespace System::Data; 
using namespace System::Drawing; 
using namespace Microsoft::DirectX::AudioVideoPlayback; 

/// <summary> 
/// Summary for MyForm 
/// </summary> 
public ref class MyForm : public System::Windows::Forms::Form 
{ 
public: 
    MyForm(void) 
    { 
     InitializeComponent(); 
     // 
     //TODO: Add the constructor code here 
     // 
    } 

protected: 
    /// <summary> 
    /// Clean up any resources being used. 
    /// </summary> 
    ~MyForm() 
    { 
     if (components) 
     { 
      delete components; 
     } 
    } 

private: 
    /// <summary> 
    /// Required designer variable. 
    /// </summary> 
    System::ComponentModel::Container ^components; 

#pragma region Windows Form Designer generated code 
    /// <summary> 
    /// Required method for Designer support - do not modify 
    /// the contents of this method with the code editor. 
    /// </summary> 
    void InitializeComponent(void) 
    { 
     this->components = gcnew System::ComponentModel::Container(); 
     this->Size = System::Drawing::Size(300,300); 
     this->Text = L"MyForm"; 
     this->Padding = System::Windows::Forms::Padding(0); 
     this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; 

     Audio^ myAudio; 

     myAudio = gcnew Audio("Carl Grimes - Carl Poppa.wav", false); 
     myAudio->Play(); 

    } 
#pragma endregion 
}; 
} 

Antwort

0

Der Fehler war ich war immer der folgende:

An unhandled exception of type 'System.IO.FileLoadException' occurred in 
System.Windows.Forms.dll 

Additional information: Mixed mode assembly is built against version 
'v1.1.4322' of the runtime and cannot be loaded in the 4.0 runtime without 
additional configuration information. 

Nach mehreren Fragen und Antworten gehen durch auf Stackoverflow Ich dachte, wie das Problem zu lösen .

  1. Erstellen Sie eine .config-Datei, und legen Sie sie in dem Ordner ab, in dem sich die .exe-Datei befindet.
  2. Benennen Sie die Datei .config was auch immer Ihre Exe-Datei einschließlich der Erweiterung mit dem Namen (zB MusicPlayer.exe und MusicPlayer.exe.config)
  3. den folgenden Code in der Datei .config

    Einfügen
    <?xml version="1.0" encoding="utf-8" ?> 
    <configuration> 
        <startup useLegacyV2RuntimeActivationPolicy="true"> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
        </startup> 
    </configuration> 
    

    Sie können überprüfen, welche Version von .NETFramework Sie haben, indem Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer klicken -> Eigenschaften, dann in den Konfigurationseigenschaften -> Allgemein. Sie sollten es unter Projektstandards -> .NET Target Framework Version sehen.

Verwandte Themen