2017-03-02 83 views
0

我想使用webrtc的VAD模块,在Cygwin上编译。 Cygwin为此提供了一些软件包:packagesCygwin使用libwebrtc-audio-processing-devel编译程序

我安装了选定的软件包,并想弄清楚如何编译内容。我已经包括了我在下面的尝试。我正在采取正确的方法吗?还是应该以不同的方式继续下去?当谈到c代码时,我是一个业余爱好者。

的main.cpp

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; 

所以我需要包括一些标题和链接一个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

的main.cpp

#include "audio_processing.h" 
int main() { 
    AudioProcessing* apm; 
} 

类AudioProcessing头编译

$ 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音频处理-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 
+0

尝试用'-lwebrtc_audio_processing' – matzeri

+0

@matzeri 这没”不要这样做。 输出: '$ g ++ main.cpp -o main -L/bin/-webrtc_audio_processing -I/usr/include/webrtc_audio_processing/webrtc/modules/audio_processing/include/ 从main.cpp包含的文件中:1:0 : /usr/include/webrtc_audio_processing/webrtc/modules/audio_processing/include/audio_processing.h:22:35:致命错误:webrtc/base/arraysize.h:没有这样的文件或目录 编译已终止。“ – Modf

回答

1

着眼于包装内容:

https://cygwin.com/packages/x86_64/libwebrtc-audio-processing-devel/libwebrtc-audio-processing-devel-0.3-1

2016-07-28 08:48   0 usr/include/ 
2016-07-28 08:48   0 usr/include/webrtc_audio_processing/ 
2016-07-28 08:48   0 usr/include/webrtc_audio_processing/webrtc/ 
2016-07-28 08:48   0 usr/include/webrtc_audio_processing/webrtc/base/ 
2016-07-28 08:48  1190 usr/include/webrtc_audio_processing/webrtc/base/arraysize.h 
2016-07-28 08:48  2257 usr/include/webrtc_audio_processing/webrtc/base/basictypes.h 
2016-07-28 08:48  10507 usr/include/webrtc_audio_processing/webrtc/base/checks.h 
2016-07-28 08:48  1407 usr/include/webrtc_audio_processing/webrtc/base/constructormagic.h 
2016-07-28 08:48  3572 usr/include/webrtc_audio_processing/webrtc/base/maybe.h 
2016-07-28 08:48  1248 usr/include/webrtc_audio_processing/webrtc/base/platform_file.h 
2016-07-28 08:48  3343 usr/include/webrtc_audio_processing/webrtc/common.h 
2016-07-28 08:48  27807 usr/include/webrtc_audio_processing/webrtc/common_types.h 
2016-07-28 08:48   0 usr/include/webrtc_audio_processing/webrtc/modules/ 
2016-07-28 08:48   0 usr/include/webrtc_audio_processing/webrtc/modules/audio_processing/ 
2016-07-28 08:48   0 usr/include/webrtc_audio_processing/webrtc/modules/audio_processing/beamformer/ 
2016-07-28 08:48  3534 usr/include/webrtc_audio_processing/webrtc/modules/audio_processing/beamformer/array_util.h 
2016-07-28 08:48   0 usr/include/webrtc_audio_processing/webrtc/modules/audio_processing/include/ 
2016-07-28 08:48  38576 usr/include/webrtc_audio_processing/webrtc/modules/audio_processing/include/audio_processing.h 
2016-07-28 08:48   0 usr/include/webrtc_audio_processing/webrtc/modules/interface/ 
2016-07-28 08:48  27021 usr/include/webrtc_audio_processing/webrtc/modules/interface/module_common_types.h 
2016-07-28 08:48   0 usr/include/webrtc_audio_processing/webrtc/system_wrappers/ 
2016-07-28 08:48   0 usr/include/webrtc_audio_processing/webrtc/system_wrappers/include/ 
2016-07-28 08:48  3706 usr/include/webrtc_audio_processing/webrtc/system_wrappers/include/trace.h 
2016-07-28 08:48  3682 usr/include/webrtc_audio_processing/webrtc/typedefs.h 
2016-07-28 08:48   0 usr/lib/ 
2016-07-28 08:48  1360018 usr/lib/libwebrtc_audio_processing.dll.a 
2016-07-28 08:48   0 usr/lib/pkgconfig/ 
2016-07-28 08:48   317 usr/lib/pkgconfig/webrtc-audio-processing.pc 

include指令可能只有

-I/usr/include/webrtc_audio_processing 
+0

对,我已经看到了从webrtc文件夹(位于webrtc_audio_processing中)开始,引用库的不同'副本'的代码实例。我修改了我的简单main.cpp以适应这种变化并编译。现在我们有一些新的输出,参见[这里](http://pastebin.com/WDh6z1BQ)。输出的一部分是'/usr/include/webrtc_audio_processing/webrtc/base/platform_file.h:27:2:错误:#error不支持的平台 #error不支持的平台',但如果这不能在cygwin上编译,为什么会它可以作为一个包吗? – Modf

+0

这样使用标题('#include ')实际上是正确的。您可能还需要将“-DWEBRTC_WIN”添加到您的构建标志中,以发送给您正在为Windows构建的标头。 –

+0

那帮了! 还有一个错误: '/usr/include/webrtc_audio_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' 和下面的[输出](http://pastebin.com/wS0Yp6qN)。 我不知道为什么这个M_PI变量没有被声明,试图解决它。 – Modf