我试图将portaudio和opus包含在我的项目中,但是每当我编译时,我都会得到这个错误
Scanning dependencies of target PeersChat
[ 50%] Building CXX object CMakeFiles/PeersChat.dir/main.cpp.obj
[100%] Linking CXX executable PeersChat.exe
CMakeFiles\PeersChat.dir/objects.a(main.cpp.obj): In function `main':
F:/Documents/Programming/Projects/PeersChat/main.cpp:13: undefined reference to `opus_encoder_create'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [CMakeFiles\PeersChat.dir\build.make:86: PeersChat.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles\Makefile2:75: CMakeFiles/PeersChat.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:82: CMakeFiles/PeersChat.dir/rule] Error 2
mingw32-make.exe: *** [Makefile:117: PeersChat] Error 2
这是我的main.cpp
#include <iostream>
#include <portaudio.h>
#include <opus.h>
int main() {
opus_int32 sampleRate = 8000;
int channels = 2;
int error;
OpusEncoder *enc;
enc = opus_encoder_create(sampleRate, channels, OPUS_APPLICATION_VOIP, &error);
return 0;
}
这是我当前的cmake
cmake_minimum_required(VERSION 3.16)
project(PeersChat)
include_directories("F:\\Documents\\Programming\\Libraries\\portaudio\\include")
include_directories("F:\\Documents\\Programming\\Libraries\\opus-1.3.1\\include")
set(CMAKE_CXX_STANDARD 14)
add_executable(PeersChat main.cpp)
有人能写出一个正确的cmake文件来为我解决这个问题吗? 请不要链接我到另一篇文章,因为我可以向你保证,我已经检查了它,它没有帮助。
您需要在cmakelists.txt的末尾添加一行,以便将库链接到可执行文件:
target_link_libraries (PeersChat PRIVATE <the_libraries_to_link>)