c++ - 错误:LNK1104 无法打开文件“pthread.lib”
问题描述
我正在尝试使用 Visual Studio 2017 在 Windows 中编译本机 Linux C++ 应用程序。该应用程序使用 WebRtc 的声学回声消除 (AEC) API 来消除 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 的源文件(cpp)的链接: https ://github.com/lschilli/wav-aec/blob/master/webrtc-audioproc.cpp
将代码从 Linux 移植到 Windows 的正确方法是什么?什么是 Windows 相当于 gflags 和 pthread?需要对 CmakeLists.txt 进行哪些必要的更改?
PS:我已经手动添加了 pthread header、dll 和 libs 到 Visual Studio 目录。
解决方案
如果 'missing pthread library' 是唯一的错误,您可以使用pthread-w32。我们已经在一些需要 pthread 的跨平台应用程序中成功使用了它。
他们有 64 位和 32 位的库。您可以下载并将其添加到您的项目中。您还没有提到您的工具集——它们的库的名称因您的工具集(MSVC 或 GNU)而异,因此您需要选择正确的库。查看他们的常见问题解答。
希望能帮助到你。
推荐阅读
- python - 如何在 Python 上使用正则表达式从字符串中删除除日期和时间之外的所有数字?
- python-3.x - 导入tensorflow时没有名为“tensorflow.python.platform”的模块|| python shell 上的 tflearn
- gem5 - 在 gem5 上运行 ARM-fullsystem
- c# - 错误 ORA-00907:调用 command.ExecuteReader() 时缺少右括号
- vb.net - 如何将流转换为图像?
- sql - 将数据从 Excel 用户窗体复制到 Access 表时出现语法错误
- javascript - 为什么网站试图隐藏他们的前端技术?
- java - java - 如何在运行时在java中创建自己的类类型?不存在任何类定义
- powershell - 更改 Windows 10 屏幕刷新率。59 如果 60, 60 如果 59
- django-rq - 在 djangorq 中自动创建队列