链接错误与第三方库在Qt Creator

Linking error with 3rd party library in Qt Creator

本文关键字:Qt Creator 第三方 错误 链接      更新时间:2023-10-16

我需要解码pcm数据到opus格式。因此,我想将opus源代码包含到我的项目中,但我无法链接这些文件。我从这里下载了源文件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_ALLOCAopus/win32中定义为config.h。从我所看到的,文件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 ...