gpt4 book ai didi

c++ - Portaudio 示例 "record_file.c"没有找到 "min"

转载 作者:行者123 更新时间:2023-11-28 06:25:05 27 4
gpt4 key购买 nike

首先,我已经让较小的示例 paex_record.c 运行。

我在 Windows8 上使用 MinGW 并从源代码编译了 portaudio,那是我从中获得了使用过的 libportaudio-2.dll

我在 QtCreator(没有 gui)中使用以下 .pro 文件设置了一个项目:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

LIBS += -LC:/Audio/patest/paex_record_file -llibportaudio-2

我的文件夹 C:/Audio/patest/paex_record_file 看起来像:

libportaudio-2.dll
main.cpp
pa_ringbuffer.c
pa_ringbuffer.h
pa_util.h
paex_record_file.pro
paex_record_file.pro.user
portaudio.h

我把pa_ringbufferpa_util都复制到这个文件夹里找不到了。Main.cpp包含来自 portaudio 源的整个示例文件 paex_record_file.c

调用ringbuffer时出现错误(第246和271行:source):“min”未在此范围内声明

我以为这个例子会像record.c例子一样直接运行。

我需要包含更多包吗?我尝试了algorithmmathstdusing namespace std,但仍然出现错误。但我觉得它应该开箱即用,也许我的包含文件或文件夹设置/链接不正确?

编辑:好的,所以我自己定义了一个最小函数。现在它抛出不同的错误:对“PaUtil_GetRingBufferReadAvailable”的 undefined reference 还有一些这样的。应该是缺少链接库,看看...

最佳答案

我在尝试编译 paex_record_file.c 时也遇到了这个链接错误。原来你需要在编译主文件之前编译 pa_ringbuffer.c。还有一些 alloc 函数的外部依赖性,因此您需要更改文件中的 2 行。

我对 qt 不是很了解,但你需要做类似的事情:

SOURCES += pa_ringbuffer.c main.cpp

下面是我如何使用 MinGW 进行编译:

paex_record_file.c 内部的变化

Line 313 : data.ringBufferData = (SAMPLE *) malloc( numBytes );
Line 443 : free( data.ringBufferData );

用 MinGW 编译:

gcc -o p_rec.exe C:\path_to_portaudio\portaudio\common\pa_ringbuffer.c \
paex_record_file.c -lportaudio \
-IC:\path_to_portaudio\portaudio\src\common

我没有遇到最小问题,但也许你可以尝试删除 ifdef 守卫并尝试重新编译。

#ifdef _WIN32
#include <windows.h>
#include <process.h>
#endif

#include <windows.h>
#include <process.h>

关于c++ - Portaudio 示例 "record_file.c"没有找到 "min",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28660085/

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