
Ilia
19.08.2018
06:32:09

Nik
19.08.2018
06:36:24

Ilia
19.08.2018
06:47:24
Microsoft например добавлял впереди _.
Плюс lover case upper case.

Nik
19.08.2018
06:52:55
И до сих пор добавляет, правда? При этом есть .def файл, в котором можно имена указать как захочешь. ABI совместимость это не трогает. ABI совместимость между платформами не существует, потом пофигу что там добавляет msvc, пока он это добавляет всегда и это документировано. Проблемы с ABI это, например, когда ты на той же платформе берешь компилятор посвежей и ничего не меняя в коде просто компилируешь новый бинарь, и после этого клиенты, которые правильно работали со старой версией отваливаются нафиг

Google

Andrey
19.08.2018
08:32:13


Joy
19.08.2018
09:42:26
Господа, прошу помощи в личку. Суть - не могу настроить сборку проекта.
cmake тут
https://pastebin.ubuntu.com/p/vvTr7TmdD4/
структура проекта:
/src/main.cpp
/src/statemachine.cpp
/include/statemachine.hpp
/include/state.hpp
/include/DEFINITIONS.h
/build
CMakeList.txt
собирать пытаюсь из build
на этапе линковки получаю
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/Scrt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
ранее это был проект с sfml, я повырезал из cmakelist всё лишнее, но может как-то криво повырезал, уже часа два бьюсь
или с благодарностью приму в дар рабочий "универсальный" cmakelist для небольших проектов

Roman
19.08.2018
10:03:00

Joy
19.08.2018
10:04:05
[ 33%] Building CXX object CMakeFiles/pocketdung.dir/src/main.cpp.o
[ 66%] Building CXX object CMakeFiles/pocketdung.dir/src/statemachine.cpp.o
после этого ошибка
до линкера дошло, все (а их целых ДВА) файла проекта скомпилились перед этим

Google

Roman
19.08.2018
10:09:28
Включи verbose mode и посмотри какие обьектники линкеру передаются.
Функция main у тебя есть?

Egor
19.08.2018
10:21:22
никто не встречал на винде, что SetUnhandledExceptionFilter не вызывается из std::thread, т.к. они noexcept?

Constantine
19.08.2018
10:47:21

Egor
19.08.2018
10:52:43
в main() ставим SetUnhandledExceptionFilter, далее std::thread t([] { throw 5; });, наш обработчик не вызовется, вместо него будет терминейт, т.к. std::thread помечен, как noexcept и он не даёт вызвать хендлер

Евгений
19.08.2018
10:54:21
Щас бы эксепшоны из тредов ловить в другом потоке
В 2к18

Constantine
19.08.2018
10:54:27
хм... так отдельные потоки изолированы по исключениям

Egor
19.08.2018
10:54:51
получается даже по SEH

Constantine
19.08.2018
10:55:29
SEH это не про throw 5; я полагаю

Egor
19.08.2018
10:55:30
мне минидамп надо сделать, а там terminate()

Constantine
19.08.2018
10:55:59
так terminate вызван обработчиком
вообще там обертки с catch-ем есть для промизов

Egor
19.08.2018
10:56:39
нет, он компилятором впихивается из-за noexcept

Constantine
19.08.2018
10:57:03
да, но исключение было обработано

Egor
19.08.2018
10:57:05
т.е. CreateThread будет работать так, а std::thread уже нет
What's happening here is that std::thread is defined as noexcept which enforces termination if an unhandled exception propagates out of it. As such, the throw inside the thread should never have propagated out and the handler set in SetUnhandledExceptionFilter shouldn't have been invoked in any case. To catch this scenario, use set_terminate in addition to SetUnhandledExceptionFilter.
https://developercommunity.visualstudio.com/content/problem/235602/setunhandledexceptionfilter-callback-not-invoked-f.html

Constantine
19.08.2018
10:58:05
вы же понимаете, что исключение до UnhandledExceptionFilter вообще не дошло?

Ivan
19.08.2018
10:58:12
Вот можно попробовать

Google

Egor
19.08.2018
10:58:25
set_terminate уже начал делать
но в set_terminate я уже не могу получить исключение, компилятор пишет:
error C2707: '_exception_info': bad context for intrinsic function
note: _exception_info() outside an exception filter

Constantine
19.08.2018
10:59:46
так поймайте его кек

Egor
19.08.2018
11:00:12
ну для каждой std::thread обёртку придётся делать

Ⱪonstantin
19.08.2018
11:00:23

Egor
19.08.2018
11:00:30
видимо, включая SEH

Constantine
19.08.2018
11:00:49
а вы собираетесь SEH в лицо получать?
там, вроде, даже под /EHsc это черевато

Egor
19.08.2018
11:01:14
а куда его ещё получать?

Constantine
19.08.2018
11:01:28
SEH не должно триггериться

Egor
19.08.2018
11:01:53
ну вот в минидампе посмотрю и исправлю, где вылезло

Constantine
19.08.2018
11:02:24
если у вас pagefault падает в область вне вашей памяти, то вы уже совершенно точно в UB области плюсов

Egor
19.08.2018
11:03:05
да я и хотел бы винапи хендлер в этом месте и минидамп

Constantine
19.08.2018
11:04:33
ну так не запускайте бросающие исключения потоки просто так)
всякие promise-ы в этом случае exception_ptr через потоки таскают

Egor
19.08.2018
11:06:19
да мало ли кто, какая библиотека что создаст и что кинет, тут общий подход от системы рубится ноексептом

Constantine
19.08.2018
11:06:58
а если какая библиотека вызовет _exit

Egor
19.08.2018
11:07:19
всё в порядке, хочу видеть краши

Constantine
19.08.2018
11:07:33
_exit это по сути ::ExitProcess без всего

Google

Egor
19.08.2018
11:07:49
подходит

Constantine
19.08.2018
11:07:59
если библиотека работает не как надо - вопрос к авторам библиотеки

Egor
19.08.2018
11:08:15
само собой
проверил SEH из std::thread обрабатываются SetUnhandledExceptionFilter, тогда всё более менее

Yarique
19.08.2018
12:17:55
Подскажите, пожалуйста, тезисно: почему std::bind или boost::bind хуже чем использование лямбд?

Rime
19.08.2018
12:28:32
Это типа библиотека такая?
Случаем не для Serialization?

Соломончик
19.08.2018
12:29:08

Yarique
19.08.2018
12:29:23

Соломончик
19.08.2018
12:29:25
одна из самых известных для плюсов

Yarique
19.08.2018
12:29:46
Она выглядит бесконечной

ed
19.08.2018
12:33:52
Негласный плюсовый стандарт

Max
19.08.2018
12:35:30

Yarique
19.08.2018
12:50:05

Rime
19.08.2018
12:56:21
Это больше чем библиотека
Как работать в ней с Serialization?
А-то не знаю где там туториалы по ней искать или типа того, для собственного движка 2D игры

Yarique
19.08.2018
12:57:28

Google

Max
19.08.2018
12:59:11

Побитый
19.08.2018
13:03:41

Yarique
19.08.2018
13:10:25
boost::asio::async_write(
m_socket,
boost::asio::buffer(m_pending_sends.front()),
boost::asio::bind_executor(
m_io_strand,
[
self=shared_from_this(),
send_buffer_it=m_pending_sends.begin()
] (auto &&ec, auto &&...)
{
self->HandleSend(ec,send_buffer_it);
}
)
);
А такая лямбда лишних аллокаций динамических не должна добавлять?

?????
19.08.2018
13:10:35
Ща
https://www.youtube.com/watch?v=JtUZmkvroKg

Yarique
19.08.2018
13:38:29

?????
19.08.2018
13:40:28
Может быть в том, что назвается the cost of lambdas

Xessao
19.08.2018
13:54:33

Yarique
19.08.2018
14:18:42
Слишком жирно.
Скорее площадка для подготовки технических спецификаций новых стандартов и иногда качественные готовые решения

Matwey
19.08.2018
14:36:40
Господа
А вот кто знает