我需要将 pcm 数据解码为 opus 格式。
因此,我想将 opus 源包含在我的项目中,但我无法链接文件。
我从 here 下载了源文件 opus-1.1.tar.gz
。
在 Qt Creator 中,我将所有文件添加到我的 pro
-file:
INCLUDEPATH += \
$$PWD/opus/opus/celt \
$$PWD/opus/opus/celt/arm \
$$PWD/opus/opus/celt/tests \
$$PWD/opus/opus/celt/x86 \
$$PWD/opus/opus/silk \
$$PWD/opus/opus/silk/arm \
$$PWD/opus/opus/silk/fixed \
$$PWD/opus/opus/silk/float \
$$PWD/opus/opus/include \
$$PWD/opus/opus/win32
// and here would come an abnormous listing of all c- and h-files of opus:
SOURCES += ...
HEADERS += ...
在编译时,我收到来自
stack_alloc.h
的警告#if (!defined (VAR_ARRAYS) && !defined (USE_ALLOCA) && !defined (NONTHREADSAFE_PSEUDOSTACK))
#error "Opus requires one of VAR_ARRAYS, USE_ALLOCA, or NONTHREADSAFE_PSEUDOSTACK be defined to select the temporary allocation mode."
#endif
例如,
USE_ALLOCA
在 config.h
中的 opus/win32
中定义。从我所看到的,文件 config.h
只包含如下:#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
但是在源代码附带的所有文件中,我都找不到
#define HAVE_CONFIG_H
。此外,在文件
config.h
中有一个 #include "version.h"
。该文件也不随源一起提供。我真的不知道如何使用 Opus-lib。这不会那么难,但我根本没有找到一个正在运行的最小示例。我使用的是 Windows 8、mingw 和 c++,但库是 c。
最佳答案
您可以将 -D VAR_ARRAYS
添加到您的编译命令或在头文件中定义:
#define VAR_ARRAYS 1
使用 emscripten (WebAssembly) 构建时,我必须添加以下两个标志:
$ emcc -D VAR_ARRAYS -D OPUS_BUILD ...
关于c++ - 与 Qt Creator 中的 3rd 方库链接错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31279445/