C++ 使用libwebrtc音频处理开发工具Cygwin编译程序
我想使用webrtc的VAD模块,在Cygwin上编译。 Cygwin为此提供了一些软件包: 我安装了所选的软件包,并想了解如何编译。我已经在下面列出了我迄今为止所做的尝试。我是否采取了正确的方法?还是我应该以另一种方式继续?说到c代码,我是个业余爱好者 main.cppC++ 使用libwebrtc音频处理开发工具Cygwin编译程序,c++,cygwin,webrtc,C++,Cygwin,Webrtc,我想使用webrtc的VAD模块,在Cygwin上编译。 Cygwin为此提供了一些软件包: 我安装了所选的软件包,并想了解如何编译。我已经在下面列出了我迄今为止所做的尝试。我是否采取了正确的方法?还是我应该以另一种方式继续?说到c代码,我是个业余爱好者 main.cpp int main() { AudioProcessing* apm; } #include "audio_processing.h" int main() { AudioProcessing* apm; }
int main() {
AudioProcessing* apm;
}
#include "audio_processing.h"
int main() {
AudioProcessing* apm;
}
编撰
$ g++ main.cpp
main.cpp: In function ‘int main()’:
main.cpp:3:2: error: ‘AudioProcessing’ was not declared in this scope
AudioProcessing* apm;
^
main.cpp:3:19: error: ‘apm’ was not declared in this scope
AudioProcessing* apm;
$ g++ main.cpp -o main -L/bin/ -lcygwebrtc_audio_processing-1 -I/usr/include/webrtc_audio_processing/webrtc/modules/audio_processing/include/
In file included from main.cpp:1:0:
/usr/include/webrtc_audio_processing/webrtc/modules/audio_processing/include/audio_processing.h:22:35: fatal error: webrtc/base/arraysize.h: No such file or directory
compilation terminated.
因此,我需要包含一些头并链接一个dll,以提供我猜测的实现
$ ls /usr/include/webrtc_audio_processing/webrtc/
base/ common_types.h system_wrappers/
common.h modules/ typedefs.h
$ find / -name "*rtc*dll"
/bin/cygsmartcols-1.dll
/bin/cygwebrtc_audio_processing-1.dll
/usr/bin/cygsmartcols-1.dll
/usr/bin/cygwebrtc_audio_processing-1.dll
我在audio_processing.h中找到了包含类AudioProcessing的头文件
main.cpp
int main() {
AudioProcessing* apm;
}
#include "audio_processing.h"
int main() {
AudioProcessing* apm;
}
编撰
$ g++ main.cpp
main.cpp: In function ‘int main()’:
main.cpp:3:2: error: ‘AudioProcessing’ was not declared in this scope
AudioProcessing* apm;
^
main.cpp:3:19: error: ‘apm’ was not declared in this scope
AudioProcessing* apm;
$ g++ main.cpp -o main -L/bin/ -lcygwebrtc_audio_processing-1 -I/usr/include/webrtc_audio_processing/webrtc/modules/audio_processing/include/
In file included from main.cpp:1:0:
/usr/include/webrtc_audio_processing/webrtc/modules/audio_processing/include/audio_processing.h:22:35: fatal error: webrtc/base/arraysize.h: No such file or directory
compilation terminated.
对不起,如果这看起来很明显,我们都必须从某个地方开始
讨论结果:
下面是在Cygwin上使用libwertc audio processing devel成功编译的一个简单程序
$ cat main.cpp
#include "webrtc/modules/audio_processing/include/audio_processing.h"
int main() {
webrtc::AudioProcessing* apm;
}
$ g++ main.cpp -o main -I/usr/include/webrtc_audio_processing/ -DWEBRTC_WIN -std=gnu++11 -L/bin/ -lcygwebrtc_audio_processing-1
查看包内容: include指令可能只是
-I/usr/include/webrtc_audio_processing
尝试
-lwebrtc\u audio\u processing
@matzeri,但它也没有这样做。输出:$g++main.cpp-o main-L/bin/-lwebtc\u audio\u processing-I/usr/include/webrtc\u audio\u processing/webrtc/modules/audio\u processing/include/In文件包含在main.cpp:1:0:/usr/include/webrtc\u audio\u processing/include/audio\u processing.h:22:35:致命错误:webrtc/base/arraysize.h:没有这样的文件或目录编译已终止。
这似乎是对的,我看到库的不同“副本”中的代码实例引用了从webrtc文件夹(位于webrtc\u audio\u处理中)开始的标题。我修改了我的simple main.cpp以适应这种变化,并编译了它。现在我们有了一些新的输出,请参见。输出的一部分是/usr/include/webrtc_audio_processing/webrtc/base/platform_file.h:27:2:error:#error Unsupported platform#error Unsupported platform
,但如果没有在cygwin上编译,为什么它会作为一个包提供呢?这样使用头(#include
)实际上是正确的。您可能还需要将-DWEBRTC\u WIN
添加到您的构建标志中,以向正在为Windows构建的标题发送信号。这很有帮助!出现另一个错误:/usr/include/webrtc\u audio\u processing/webrtc/base/maybe.h:34:7:警告:覆盖控件(覆盖/最终)只有-std=c++11或-std=gnu++11可用,这需要我添加-std=c++11。现在我有:$g++main.cpp-o main-L/bin/-lcygwebrtc_audio_processing-1-I/usr/include/webrtc_audio_processing/-DWEBRTC_WIN-std=c++11
,以及以下内容。我不确定为什么这个m_PI变量没有被声明,我正在尝试解决它。看起来它应该很好,因为它在数学之前定义了。在cmath.h之前没有#define(定义#使用(数学)define(定义#定义#使用(数学)定义),但添加它不会改变任何事情。请尝试改用-std=gnu++11
?