我正在尝试使用VisualStudio2017在Windows中编译一个本地的Linux C++应用程序。该应用程序使用WebRtc的声回声消除(AEC) app来否定wav文件上的回波。以下是CmakeLists.txt文件:
cmake_minimum_required(VERSION 2.8)
project(wav-aec)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
add_subdirectory(gflags)
add_definitions("-DWEBRTC_NS_FLOAT -DWEBRTC_WIN -DNOMINMAX")
#-DWEBRTC_UNTRUSTED_DELAY -DWEBRTC_LINUX -DWEBRTC_POSIX
include_directories(
webrtc
webrtc/webrtc/common_audio/signal_processing/include
webrtc/webrtc/modules/audio_coding/codecs/isac/main/include
)
set(WEBRTC_SRC_
base/buffer.cc
base/checks.cc
...
...
#system_wrappers/source/rw_lock_posix.cc
system_wrappers/source/trace_impl.cc
#system_wrappers/source/trace_posix.cc
)
function(prepend_path var prefix)
set(listVar "")
foreach(f ${ARGN})
list(APPEND listVar "${prefix}/${f}")
endforeach(f)
set(${var} "${listVar}" PARENT_SCOPE)
endfunction(prepend_path)
prepend_path(WEBRTC_SRC webrtc/webrtc ${WEBRTC_SRC_})
add_executable(webrtc-audioproc webrtc-audioproc.cpp ${WEBRTC_SRC})
target_link_libraries(webrtc-audioproc gflags pthread)当我试图构建它时,我得到以下错误:错误: LNK1104无法打开文件'pthread.lib'
下面是指向该项目的唯一linux依赖源文件的链接:https://github.com/lschilli/wav-aec/blob/master/webrtc-audioproc.cpp
将代码从Linux移植到windows的正确方法是什么?什么是Windows等效的g标志和线程?需要对CmakeLists.txt进行哪些必要的更改?
P.S:我已经手动向Visual目录中添加了p线程头、dll和libs。
发布于 2018-12-13 09:00:00
如果“缺少线程库”是唯一的错误,则可以使用P线程-W32。我们已经成功地在我们的跨平台应用程序中使用了它,这些应用程序需要p线程。
他们有64位和32位的库。您可以下载并将其添加到项目中。您还没有提到您的工具集--它们的库根据您的工具集(MSVC或GNU)的不同命名,因此您需要选择正确的一个。看看他们的常见问题。
希望能帮上忙。
发布于 2020-09-16 02:30:06
您需要实际的库文件,它通常不是"pthread.lib“。它最有可能是“pTHERVC3.lib”或“pTERNEVC2.lib”。通过查看源包的lib目录来查找实际名称。您可能会在其中看到其他lib文件,如“pTHERVCE3.lib”和“pTHERVSE3.lib”,但您希望链接“pTHERVC3.lib”。
可以将其添加到项目设置中,也可以添加以下代码:
#pragma comment(lib,"pthreadVC3.lib")要将其添加到项目设置,请执行以下操作:
确保您拥有与编译设置(即x86/x64 )匹配的正确版本的p线程。
在我的例子中,我使用VCPkg进行包管理,并使用以下命令安装p线程:
vcpkg install pthread:x86-windows
vcpkg install pthread:x64-windows而且我的包库目录是"C:\ vcpkg \installed\x64-windows\ lib“,另外,由于vcpkg不是自动集成的,所以我不得不将以下内容添加到我的项目设置中:
https://stackoverflow.com/questions/53752689
复制相似问题