Anatoly
Berkus
Berkus
и ничего не соберется
🙃
Господа, можно ли как-то под виндой узнать какие длл-ки загружаются моей программой, рекурсивно, с путями вместе.
У меня при загрузке foo.dll начинают резолвиться её зависимости, и одна из них не резолвится, хотелось бы узнать в какой длл-ке поиск происходит, потому как там несколько длл-ок с одним именем.
🙃
в разных подпапках
Anatoly
alekum
Vsevolod
проблема в том, что эти интерфейсы так и будут на raw pointers и на всяких кишках от glib (hash table, ptr array итп). А вот от последнего и хочется избавиться путем миграции на c++
Vsevolod
классы - это вообще вторичное
Anatoly
Спс
в runtime Process32First/Process32Next, Module32First/Module32Next, детальную инфу посмотри в MSDN
Timur
Господа, можно ли как-то под виндой узнать какие длл-ки загружаются моей программой, рекурсивно, с путями вместе.
У меня при загрузке foo.dll начинают резолвиться её зависимости, и одна из них не резолвится, хотелось бы узнать в какой длл-ке поиск происходит, потому как там несколько длл-ок с одним именем.
В glass.exe переходим в корешок настройки флагов для конкретного приложения, вводим имя exe, нажимаем tab, включаем loader snaps, запускаем отладчик и смотрим в debug output, на что загрузчик обзовется
Anatoly
Timur
Berkus
Berkus
потом переписывать модули, выкидывая трансляцию между с и с++
Vsevolod
да, надо посмотреть, насколько будет сложно сделать этот первый шаг
Berkus
ну да, если тестов нет - надо начинать на модули тесты клепать, а по тестам будет видно какие надо сделать АПИ
Berkus
потом по тестам заимплементишь АПИ, подклеишь его к сишному модулю и вот можно начинать рефактор )
Vsevolod
там довольно сложно выделить отдельные модули
Vsevolod
да, вот в этом тоже вопрос :)
Vsevolod
возможно, имеет смысл просто выкинуть неэффективные структуры данных от glib и написать нормальные
Vsevolod
к сожалению, это от glib
Vsevolod
а значит, никакое lto не заинлайнт cmp/hash функции
Vsevolod
и это жопа
Anatoly
я имею ввиду, взять std реализацию
Vsevolod
ну, std::unordered_map как бы не блистает скоростью
Vsevolod
это же open hash table со всеми вытекающими
Vsevolod
даже в glib лучше
Vsevolod
но из-за темплейтов оно хотя бы выглядит человечески в отличие от khash с его макросами внутри структур (брр)
Berkus
сначала надо взять std
Berkus
потом конвертнуть
Berkus
потом профайлить
Berkus
потом оптимизировать там где надо оптимизировать
Berkus
раз уж вы взялись за с++ рекомендую немедленно втянуть буст
Vsevolod
я еще пока ни за что не взялся, я размышляю, стоит ли
Vsevolod
и сколько это займет времени
Aleksei
Всем привет. Есть примерно такой код
https://paste.fedoraproject.org/paste/vu6M2D4mkwPpGZY61rw63Q
Все вроде бы работает, но иногда, очень редко, почему-то в в strFull и strShort оказываются разные даты... Например,
1515577750, 2018-01-10 06:44:36, 09_01_2018
Не могу понять, как это может происходить...
Vsevolod
ну, сходу все void * implicit касты идут лесом
Vsevolod
а так, даже не знаю, что
Anonymous
какие там различия кроме void-pointers?
Vsevolod
разве что c99 member wise initialisation:
struct foo = { .f1 = 1, .f2 = 2}
Vsevolod
но в каком-то c++ это добавили (в 17-м afair)
Berkus
мне лень, а если тебе интересно - скачай любой проект - тот же glib и сделай CC=g++ ./configure и посмотри
Vsevolod
у меня cmake, и он так делать отказывается
Ignat
Vsevolod
тогда он заново вызывает cmake
Vsevolod
впрочем, это можно обойти
Berkus
это отключается
Aleksei
Всем привет. Есть примерно такой код
https://paste.fedoraproject.org/paste/vu6M2D4mkwPpGZY61rw63Q
Все вроде бы работает, но иногда, очень редко, почему-то в в strFull и strShort оказываются разные даты... Например,
1515577750, 2018-01-10 06:44:36, 09_01_2018
Не могу понять, как это может происходить...
Почитал описание localtime, там сказано
The returned value points to an internal object whose validity or value may be altered by any subsequent call to gmtime or localtime.
Я правильно понимаю, что если между вызовами strftime в другом потоке будет вызван localtime с другим таймстемпом, то второй вызов strftime вернет мне другую дату?
Berkus
да
Berkus
эти кривые сишные апи со статик объектом в функции абсолютно не thread safe
Aleksei
Уф... Хоть понятно стало, в чем дело
Aleksei
localtime_r что ли использовать...
Berkus
ну там должны быть нестандартные функции которые безопасны для кросс-тредовых апп
Berkus
обычно этот статик буфер сунут в TLS
Aleksei
С tls было бы хорошо. Проверю, спасибо
Vsevolod
localtime_r - это posix
Vsevolod
и там нет никакого tls - объект просто передается в саму функцию
Vsevolod
http://pubs.opengroup.org/onlinepubs/009695399/functions/localtime.html
Aleksei
Berkus
Berkus
это несколько оффтопик, правда же?
Ostap ꑭ
Разрешает, у ChatMember есть state, одним из значений которых есть 'member'
Ostap ꑭ
Но это оффтоп
Berkus
ChatMember.member.isMember()
Alexander "SonnySlave"
https://cppcast.com/2018/01/matt-godbolt/
Alexander "SonnySlave"
@antoshkka как там перевод буста на CMake? неужели снова умерло?
Ostap ꑭ
Неужели так трудно раз в год через Boost.Build собирать? Где профит от перехода на CMake?
Alexander "SonnySlave"
Да, так трудно
Alexander "SonnySlave"
есть какой-то смысл в использовании Boost.Build?