【发布时间】:2015-04-23 23:14:01
【问题描述】:
首先,我已经让较小的示例 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_ringbuffer 和 pa_util 后,我将它们复制到此文件夹。
Main.cpp包含来自 portaudio 源的整个示例文件 paex_record_file.c。
调用 ringbuffer 时出现错误(第 246 和 271 行:source):
"min" was not declared in this scope
我认为这个示例会像 record.c 示例一样直接运行。
我需要包含更多的软件包吗?我试过algorithm、math、std和using namespace std,但仍然出现错误。但是我觉得它应该可以解决,也许我的包含文件或文件夹设置/链接不正确?
编辑:好的,所以我自己定义了一个最小函数。现在它抛出不同的错误:
undefined reference to "PaUtil_GetRingBufferReadAvailable"
还有一些这样的。可能是缺少一个lib需要链接,看看...
【问题讨论】:
-
windows.h 有 min 和 max 的宏,这可能会造成干扰,在包含它之前尝试 #define NOMINMAX
-
这不起作用。
define NOMINMAX也定义在windows.h如果RC_INVOKED被定义,但我不知道后者是否被定义。对我的帖子进行了编辑。