Создайте приложение с помощью Boost.asio, используя Bazel.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Создайте приложение с помощью Boost.asio, используя Bazel.

Сообщение Anonymous »

Я пытаюсь создать простой код с помощью boost.asio, используя Bazel:
main.cpp

Код: Выделить всё

#include 
#include 

boost::asio::io_service io_service;

void listenUDP(boost::asio::yield_context ctx) {
boost::asio::ip::udp::endpoint ep(boost::asio::ip::udp::v4(), 1234);
boost::asio::ip::udp::socket sock(io_service);
char data[128];
for (;;)
{
std::size_t size = sock.async_receive(boost::asio::buffer(data, sizeof(data)), ctx);
sock.async_send(boost::asio::buffer(data, size), ctx);
}
}

int main() {
boost::asio::spawn(io_service, &listenUDP);
io_service.run();
return 0;
}
MODULE.bazel

Код: Выделить всё

bazel_dep(name = "boost.asio", version = "1.83.0")
СТРОИТЬ

Код: Выделить всё

cc_binary(
name = "server",
srcs = ["main.cpp"],
deps = ["@boost.asio"]
)
Я получаю ошибки во время связывания:

Код: Выделить всё

ld:  Undefined symbols:
boost::coroutines::stack_traits::default_size(), referenced from:
_main in main.o
boost::coroutines::stack_traits::is_unbounded(), referenced from:
boost::coroutines::basic_standard_stack_allocator::allocate(boost::coroutines::stack_context&, unsigned long) in main.o
boost::coroutines::basic_standard_stack_allocator::deallocate(boost::coroutines::stack_context&) in main.o
boost::coroutines::stack_traits::maximum_size(), referenced from:
boost::coroutines::basic_standard_stack_allocator::allocate(boost::coroutines::stack_context&, unsigned long) in main.o
boost::coroutines::basic_standard_stack_allocator::deallocate(boost::coroutines::stack_context&) in main.o
boost::coroutines::stack_traits::minimum_size(), referenced from:
boost::coroutines::basic_standard_stack_allocator::allocate(boost::coroutines::stack_context&, unsigned long) in main.o
boost::coroutines::basic_standard_stack_allocator::deallocate(boost::coroutines::stack_context&) in main.o
boost::coroutines::detail::coroutine_context::jump(boost::coroutines::detail::coroutine_context&, void*), referenced from:
boost::coroutines::detail::pull_coroutine_impl::pull() in main.o
boost::coroutines::detail::pull_coroutine_object::run() in main.o
boost::coroutines::detail::push_coroutine_impl::push() in main.o
boost::coroutines::detail::pull_coroutine_object::deallocate_(boost::coroutines::detail::pull_coroutine_object*) in main.o
boost::coroutines::detail::coroutine_context::coroutine_context(void (*)(boost::context::detail::transfer_t), boost::coroutines::detail::preallocated const&), referenced from:
boost::coroutines::pull_coroutine::pull_coroutine(boost::asio::detail::spawned_coroutine_thread::entry_point&&, boost::coroutines::attributes const&) in main.o
boost::coroutines::detail::coroutine_context::coroutine_context(), referenced from:
boost::coroutines::pull_coroutine::pull_coroutine(boost::asio::detail::spawned_coroutine_thread::entry_point&&, boost::coroutines::attributes const&) in main.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Что я делаю не так? Boost устанавливается bazel_dep, я не устанавливаю его вручную и не добавляю дополнительные параметры компоновщика
Устройство: Macbook M1 MAX (ARM)
Пробовал скомпилировать, но получить ошибку

Подробнее здесь: https://stackoverflow.com/questions/792 ... sing-bazel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»