-2

我知道不是每个人都使用过 PortAudio API,但也许你可以在这里找到它。

#include <iostream>
#include <math.h>
#include "portaudio.h"

int main() {    
    PaDeviceIndex outputDevice;
    PaDeviceIndex deviceCount;
    outputDevice = Pa_GetDefaultOutputDevice();
    deviceCount = Pa_GetDeviceCount();
    const PaDeviceInfo * outputDeviceInfo;
    outputDeviceInfo = Pa_GetDeviceInfo(outputDevice);
    std::cout << "Name of default output device: " << outputDeviceInfo->name << std::endl;
    std::cout << "Struct version: " << outputDeviceInfo->structVersion << std::endl;
    return 0;
}

*编辑:*对不起,我什至不知道有调试器。我并不想表现得粗鲁或轻率。它说它是由第 12 行和第 13 行引起的,它们以 std::cout 开头。我不明白问题是什么。

4

2 回答 2

2

空指针取消引用。Pa_GetDeviceInfo正在返回一个空指针。

Program received signal SIGSEGV, Segmentation fault.
0x080487f4 in main () at pa.cpp:12
12      std::cout << "Name of default output device: " << outputDeviceInfo->name << std::endl;
(gdb) print outputDeviceInfo
$1 = (const PaDeviceInfo *) 0x0
于 2012-03-04T00:40:03.350 回答
0

文档中

const PaDeviceInfo* Pa_GetDeviceInfo ( PaDeviceIndex device )

检索指向PaDeviceInfo包含指定设备信息的结构的指针。

返回: 指向不可变PaDeviceInfo结构的指针。如果设备参数超出范围,则函数返回NULL

NULL您忘记在取消引用指针之前进行检查。哎呀。

于 2012-03-04T00:46:42.117 回答