在调试从在线教程中记下的程序时,我遇到了错误,这是YouTube上一位独立编码员制作的声音合成器。我不确定是什么原因引起的,或者如何解决。我禁用了预编译的标题女巫,这是我遇到的第一个问题。
我尝试过在线搜索,导致我在这里向他人介绍其他人的代码,我尝试在多个不和谐的服务器上进行查询。 到目前为止没有运气。另外,这只是一项小练习,可以帮助我重回正轨。
Main.cpp
#include <iostream>
#include "olcNoiseMaker.h"
using namespace std;
double MakeNoise(double dTime) {
return 0.5 * sin(540.0 * 2 * 3.14159 * dTime);
}
int main() {
wcout << "onelonecoder.com - synth part 1" << endl;
//Get all sound hardware
vector<wstring> devices = olcNoiseMaker<short>::Enumerate();
//Display finding
for (auto d : devices) wcout << "Found output device:" << d << endl;
//Create sound machine
olcNoiseMaker<short> sound(devices[0], 44100, 1, 8, 512);
//Link noise function whit machine
sound.SetUserFunction(MakeNoise);
return 0;
}
olcNoiseMaker.h仅用于获取声音芯片和bla bla。 您可以在这里观看他的视频:https://www.youtube.com/watch?v=tgamhuQnOkM&t=134s
运行该程序应导致540 KHz的连续正弦波 而是只播放一次,并给我这个错误:
引发未处理的异常:写访问冲突。 _Tgt 为0xA4EFF82C。发生
答案 0 :(得分:0)
迟到了,但我遇到了这个问题(Visual Studio 2019)。当我构建并运行程序时,在程序退出之前只有一声短促的哔哔声。问题是我在 x64 调试配置中,这导致了错误。一旦我更改为 x86 调试,它就完美运行。
编辑:此外,在您的代码中,您在 while(1) {}
语句之后缺少 sound.SetUserFunction(MakeNoise);
,这是使代码根据视频工作所需的。