Я занимаюсь разработкой кода на С ++ для Visual Studio 2019 (версия 16.5.4), и для сборки нацеливаюсь на Linux Ubuntu 18.04 с g cc 7.5 - оба на удаленной машине через s sh и на моей локальной машине через WSL2.
В обоих случаях у меня одна и та же проблема: при использовании std::async
мне нужно добавить флаг компиляции -lpthread
ко входу g cc, чтобы программа компилировалась, иначе я get
неопределенная ссылка на pthread_create
Более того, флаг должен идти после имени файла cpp, то есть g++ -lpthread xxx.cpp
завершится ошибкой с g cc 7.5 , в то время как g++ xxx.cpp -lpthread
работает нормально.
пока все хорошо, но вот проблема: я не могу сделать успешную сборку через Visual Studio: когда я добавляю флаг -lpthread в Дополнительные параметры в свойствах C / C ++ проекта, это не так Вроде бы какой-то эффект - компиляция все равно не удалась. более того, поскольку я не вижу, чтобы флаг был добавлен в командную строку полной сборки (которая представлена только для чтения), у меня нет возможности увидеть, действительно ли флаг отправляется, и в правильном порядке (а именно после cpp имя файла). поскольку я не вижу способа вручную редактировать командную строку сборки, у меня нет идей ... кто-нибудь?
Спасибо.