Ошибка: LNK1104 не может открыть файл 'pthread.lib' - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь скомпилировать собственное приложение Linux C ++ в Windows, используя Visual Studio 2017. Приложение использует API-интерфейсы WebRtc Acoustic Echo Cancellation (AEC) для подавления эха в файлах 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 вручную.

1 Ответ

0 голосов
/ 13 декабря 2018

Если единственной ошибкой является «отсутствует библиотека pthread», вы можете использовать pthread-w32 .Мы успешно использовали его в некоторых наших кроссплатформенных приложениях, требующих pthread.

У них есть библиотеки как для 64-битных, так и для 32-битных.Вы можете скачать и добавить его в свой проект.Вы не упомянули свой набор инструментов - их библиотеки называются по-разному в зависимости от вашего набора инструментов (MSVC или GNU), поэтому вам нужно выбрать правильный.Проверьте их FAQ .

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...