gpt4 book ai didi

c++ - 如何使用Microsoft::DirectX::AudioVideoPlayback播放音频?

转载 作者:行者123 更新时间:2023-12-03 01:44:57 26 4
gpt4 key购买 nike

我正在编写一个简单的音乐播放器,所以我需要能够暂停音乐,因此我尝试使用Microsoft::DirectX::AudioVideoPlayback API来执行此操作,因为PlaySound不支持该功能。但是,程序不断触发断点并引发异常。

所以我用一个空表格创建了一个新的空Visual C++ CLR空项目,只添加了代码以初始化一个新的音频对象并播放一个音频文件,但我仍然遇到相同的异常。发生问题的行是创建音频对象的新实例的行。

我对Visual Studio不太熟悉,并且以前从未使用过此API。我已将对Microsoft::DirectX和Microsoft::DirectX::AudioVideoPlayback .dll文件的引用添加到项目中,音频文件位于目录中。我已经尝试了一些在网上找到的内容,但没有任何效果。任何帮助将不胜感激!

这是MyForm.h文件:

#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
};
}

最佳答案

我得到的错误如下:

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.

在经历了关于stackoverflow的几个问题和答案之后,我找到了解决问题的方法。
  • 创建一个.config文件,并将其放在.exe文件所在的文件夹中。
  • 将.exe文件命名为任何名称为.exe的文件,包括扩展名(例如MusicPlayer.exe和MusicPlayer.exe.config)。
  • 将以下代码粘贴到.config文件中
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
    </configuration>

    您可以通过在解决方案资源管理器->属性,然后在配置属性->常规中右键单击该项目,来检查您拥有的.NETFramework版本。您应该在Project Defaults-> .NET Target Framework Version下看到它。
  • 关于c++ - 如何使用Microsoft::DirectX::AudioVideoPlayback播放音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44462807/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com