Задать вопрос
  • Почему после статической линковки на другом пк все равно запрагивает dll?

    @res2001
    Ars_15, Я бы просто удалил лишние триплеты для этой библиотеки из vcpkg, тогда у компилятора выбора не будет.
    https://learn.microsoft.com/en-us/vcpkg/concepts/t...
    Написано
  • Почему после статической линковки на другом пк все равно запрагивает dll?

    @res2001
    Ars_15, В микросовтовском компиляторе все библиотеки подключаются через lib файл и статические и динамические. Просто в случае с динамической библиотекой в lib находятся ссылки на dll, а в статической - исполняемый код библиотеки.
    Так что ты видимо взял lib от динамической библиотеки. Ну или не ты взял, а компилятор его нашел и подключил.
    Написано
  • Почему после статической линковки на другом пк все равно запрагивает dll?

    @res2001
    Ars_15,
    линковку сделал

    Линковку сделал ты в любом случае, раз приложение собралось и запустилось. С динамическими библиотеками то же "линковка".
    Раз они у тебя в зависимостях, значит линковку ты сделал с динамической библиотекой, а не со статической.
    Статическая библиотека вся будет содержаться в твоем исполняемом файле и для нее не будет показана внешняя зависимость.
    Написано
  • Почему после статической линковки на другом пк все равно запрагивает dll?

    @res2001
    Вообще можно посмотреть зависимости exe от библиотек. В составе микросовтовского компилятора должны быть утилиты командной строки для этого, какой-нибудь аналог objdump.
    Когда-то использовал GUI утилиту dependency walker, но она вроде как давно не обновляется, не знаю заработает или нет на современной винде.
    Написано
  • Как сделать линковку в проекте на с++ Visual Studio?

    @res2001
    Ars_15, Почитай что-нибудь по интеграции библиотек из vcpkg в проект MSVS. Там у него есть какой-то стандартный механизм, который просто добавляет пути поиска библиотек и заголовочников из репы vcpkg в MSVS.
    Написано
  • Как сделать линковку в проекте на с++ Visual Studio?

    @res2001
    Да, кстати, vcpkg по моему, по умолчанию собирает и статическую и динамическую версии библиотек. Сами файлы библиотек можно поискать в каталоге vcpkg, там все довольно просто устроено. В статической библиотеке будет 1 большой файл lib, в динамической 2 файла: маленький lib и большой dll.
    Другое дело, что компилятор, обычно, если найдены обе версии библиотеки использует динамическую по умолчанию.
    В связи с выше сказанным можно пойти двумя способами: удалить динамическую версию библиотеки (или ставить только статическую) или заставить компилятор (опциями) использовать именно статическую версию этой библиотеки.
    Как второй вариант сделать для микросовтовского компилятора я не в курсе, гугли.
    Написано
  • Как сделать линковку в проекте на с++ Visual Studio?

    @res2001
    Ars_15,
    Если знаешь подскажи сразу please)

    На вскидку не помню. Давно уже не пользовался. Но точно знаю, что там это делается, в свое время сам это использовал. В документации по vcpkg указано, там надо другой "триплет" применять, на сколько я помню. vcpkg ведь не устанавливает бинарники библиотек, он собирает их на месте из исходников, так что ему в принципе пофиг собирать динамическую или статическую либу.
    И да я сделал на Visual Studio lib библиотеку пытаюсь связать с проектом но выдает

    Не понятно при чем тут obj файл. Статическая либа для микросовтовского компилятора идет в lib файле и больше ничего не нужно (кроме заголовков). Похоже ты что-то делаешь не так.

    Вообще для подключения любых библиотек есть несколько простых шагов которые надо выполнить, шаги эти общие для любого компилятора, но детали могут отличаться. Т.к. ты используешь IDE, то на это то же надо сделать скидку, но в любом случае все настройки IDE в этой части в итоге преобразуются в соответствующие опции компилятора.
    Расписывал тут несколько раз это, например тут.
    Написано
  • Как сделать линковку в проекте на с++ Visual Studio?

    @res2001
    Ars_15,
    1. Библиотека умеет сама собираться в статическую библиотеку с помощью собственного CMakeLists.txt. Никакой отсебятины делать не нужно. Можешь сам собрать ее при желании, надо только немного разобраться с cmake. А потом подсунуть lib файлы и заголовки твоему проекту.
    2. Судя по описанию на github, библиотека есть в репозитории vcpkg, а следовательно ее можно установить в виде статической библиотеки средствами vcpkg. Рекомендую этот путь. В readme библиотеки есть описание того как поставить ее в vcpkg. Я правда давно его не использовал, не уверен поставится ли в таком варианте статическая версия или динамическая. Но средствами vcpkg можно поставить статическую. Разберись с vcpkg - это пакетный менеджер, часто используется совместно с MSVS.
    Написано
  • Не понимаю, почему происходит потеря пакетов. Как решить?

    @res2001
    Вит,
    сначала отработал неделю, потом три дня - когда после включения стал работать по полчаса - поехал сдавать

    С электроникой и не только всегда так - не зависимо от крутости бренда есть шанс, что железка сдохнет в первую неделю-месяц-пол года. Но если этот первоначальный период пережила, то дальше будет работать, если не будет каких-то не штатных ситуаций и шаловливых рук.

    У меня есть и положительный пример, года 3 назад покупал в баню роутер. Брал самый бюджетный, какой-то DEXP или что-то похожее, сейчас уже и не вспомню марку/модель, вообще ни о чем. Баня вымораживаемая, так что думал накроется быстро из-за перепадов температур зимой и повышенной влажности, поэтому и не брал дорогой девайс. Но вот уже 3 года полет нормальный, тьфу три раза.
    Написано
  • Как перейти с Linux на Windows?

    @res2001
    Последний раз месяца 2 назад скачивал образ винды. Да, стандартные варианты не работают. Но если найти в интеренете прямую ссылку на образ, то скачивается в лет даже без ВПН.
    Ссылку к сожалению не сохранил, так что гуглите.
    Через ВПН по идее должны работать и стандартные способы. Другое дело, что на бесплатных ВПН это может занять неделю (как повезет), а на платных - надо платить :) И ВПН сервер должен быть за границей естественно.
    Правда сейчас все может меняться достаточно быстро и те способы, что работали 2 месяца назад сейчас могут не работать.

    Да и вообще, сидите на линуксе :-) винда must die
    Написано
  • Не понимаю, почему происходит потеря пакетов. Как решить?

    @res2001
    cashcashh, Там может в роутере что-то в электронике глючит/греется и от этого перестает работать кратковременно, что приводит к пропуску пакетов. Такое может быть в любой железке, даже если она по характеристикам сильно круче, чем требуется.
    К тому же TP-Link - это же просто дешевый китаец, я уже 2 tp-link поменял по похожим причинам за последние 5 лет.
    После последнего раза реанимировал свой старый асус, который покупал лет 15 назад - работает и ведь то же китаец :)
    Написано
  • Как обновить программу "ip" в Linux?

    @res2001
    rPman, Думаю вполне может получиться, т.к. сам функционал brief требуемый ТС не завязан на версию ядра, а данные от ядра ip получает по NETLINK поддержка которого в ядре реализована с лохматых годов.
    Хотя, конечно, какие-то новые фичи не будут поддержаны, но TCу это и не нужно.
    Вообще brief - это же сокращенный формат вывода, к нему можно привести и стандартный вывод ip, распарсив его дополнительным скриптом.
    Так же ip умеет выводить в json.
    Написано
  • Как получать данные с десктопного приложения Windows (works via inet) в реальном времени?

    @res2001
    HabrScience,
    Думаю не совсем правильно поняли задачу

    Судя по вашему ответу чуть выше я задачу понял правильно.
    Разве что в вопросе не указывалось, что приложение пишет файлы.
    Но с файлами то же все может быть не просто, даже если вы получите доступ на чтение файлов удаленно (это отдельная задача похожая на взлом компьютера, если доступ для вас не открыт).
    Файлы могут быть записаны в разных форматах, форматы могут быть текстовые и двоичные. Какие-то форматы могут быть известны JSON, dbf, wav и т.п., другие могут быть произвольного формата, который знает только пишущая их программа. Для файлов известного формата можно поискать готовые библиотеки с помощью которых можно читать эти файлы. Так же возможны варианты, что файл заблокирован приложением для чтения его другим приложением, например так делают разные СУБД со своими базами, и пока приложение не закроет файл прочитать его будет не возможно.
    Так что и тут вам не грозит универсальное решение.
    Написано
  • Как получать данные с десктопного приложения Windows (works via inet) в реальном времени?

    @res2001
    Если само приложение не умеет отдавать данные, то получить их, тем более через сеть, будет затруднительно.
    Если приложение это умеет делать, то есть куча способов как это можно сделать, один из многих вариантов - обмен через сеть (интернет).
    Если приложение отдает данные через сеть, то есть куча протоколов, которые можно использовать для этих целей, в т.ч. возможен вариант какого-то собственного закрытого протокола, который кроме как в этом приложении нигде не используется.
    Нужно смотреть каждое конкретное приложение, читать его мануалы на предмет обмена с ним данными.
    Не думаю, что можно решить эту задачу в общем случае каким-то универсальным способом.

    Windows - не система реального времени, Интернет - еще больше не система реального времени. В обоих случаях возможны не предсказуемые задержки по независящим от участников обмена причинам.
    Написано
  • Почему строка не хочет выводиться на русском языке?

    @res2001
    Подобный вопрос тут уже не однократно задавался и вообще в гугле на эту тему много материала.
    Посмотрите, например, этот ответ: Как выводить русские символы в си?

    В консоли русской винды из коробки может быть несколько русских кодировок (и по умолчанию там работает кодировка CP866, как это ни странно), пользователь из консоли может менять кодировку консоли самостоятельно с помощью команды chcp (см. chcp /?). Кроме того имеет значение в какой кодировке написаны ваши исходники, т.к. при выводе кодировка консоли должна совпадать с кодировкой выводимых данных. Эти нюансы многие не знают, поэтому возникают проблемы и вопросы.
    В линукс, например, такого обычно не происходит, т.к. там давно уже UTF8 стал стандартом де-факто в консоли и соответственно все текстовые редакторы по умолчанию создают файлы в ней же - кодировки совпадают - проблемы с вводом/выводом нет.

    Общее правило для винды:
    1. пишите исходники в UTF8
    2. Для хранения всех строк используйте мультибайтовые строки и функции для работы с мультибайтовыми строками, или широкие символы (wchar_t) и соответствующие функции для широких строк.
    3. Если в п.2 выберите вариант с wchar_t, то строковые литералы задавайте с использованием модификатора L: https://en.cppreference.com/w/c/language/string_literal

    Вариант с мультибайтовыми символами+UTF8 в исходниках, часто может требовать минимальной модификации исходников и иногда использования функций для мультибайтовых строк или символов. Когда вам нужно использовать мультибайтовые функции - вы должны понимать сами.
    В случае с wchar_t вы всегда должны использовать функции для широких символов.

    В MSVS, есть свои собственные инструменты для поддержки unicode. В свойствах проекта можно задать - поддерживается unicode или нет. В самом проекте для литералов использовать макрос TEXT("текст"). Они вроде бы появились еще до того, как поддержка unicode (широких символов) появилась в стандарте. Возможно сейчас в них нет необходимости.

    Суть всех этих мероприятий: либо сделать кодировку исходников и кодировку консоли одной и той же, либо добиться преобразования кодировок "на лету", но для этого ваш run-time должен знать в какой кодировке ваши исходники. Кодировку консоли он узнает от ОС.
    Написано
  • Сетевые папки, обнаружение компьютера в сети Win10?

    @res2001
    typoisysadm, Настройки сети вполне типичные для домашней сети за роутером.
    зачем прописывать hosts

    Затем, что вы, видимо, пытаетесь обращаться к компам по имени, а преобразование имени в ip у вас нет, т.к. нет локального DNS сервера со своей зоной (для двух компов он нафиг не нужен). Поэтому как вариант, можно имена задать в host. Но это не поможет, если, например ваша локальная сеть находится в публичном профиле фаервола на одном из компов - должна быть в приватном, ну и по другим причинам еще может не работать.
    Но если внимательно прочитаете мой ответ, проверите и сделаете все, что там написано, то сеть у вас заработает и без правки hosts. Она работает более-менее хорошо уже более 30 лет.
    Написано
  • Почему в Visual Studio Code не работает объявление функций в конце кода?

    @res2001
    kotsmotritnastul,
    как переключиться на clang в visual studio

    На сколько я понял у вас VS Code, но это не сильно принципиально.
    Вообще обычно нужно задать переменные окружения CC и CXX для компиляторов Си и С++ и указать в них путь к желаемому компилятору. https://stackoverflow.com/questions/7031126/switch...

    Лично я для сборки проектов использую cmake, поэтому переключать надо cmake и не важно какая IDE при этом используется. Без системы сборки можно собирать только мини проекты из одного файла исходного кода, типа вашего примера. Когда появляется больше 1 файла исходного кода - это становится уже достаточно проблематично и чем больше файлов, тем хуже.
    Поэтому рекомендую изучить какую-то систему сборки. cmake - сейчас достаточно популярна. Но систем сборки то же довольно много. Из самого раннего - это make, но make вряд ли стоит рекомендовать.
    Написано
  • Почему в Visual Studio Code не работает объявление функций в конце кода?

    @res2001
    kotsmotritnastul, Нет никаких косяков gcc в вашем примере. Можете проверить на https://godbolt.org/ чтоб себе не устанавливать пачку компиляторов. Почему не работает у вас - без понятия. Возможно надо удалить все артефакты компиляции (объектные файлы, исполняемые файлы) и пересобрать программу.
    Работают оба варианта.
    Единственное что могу добавить - в Си функции без параметров нужно определять как: void hello(void)
    Если не указывать void в скобках, то по стандарту считается, что функция принимает int. Это древнее правило, но до сих пор еще живо.

    Еще момент. Описание - не правильный термин. Это называется объявление функции или предварительное объявление. Там где вы уже реализуете функцию - это определение функции.
    Написано
  • Как решать задачу?

    @res2001
    Надо сделать несколько наблюдений

    в-четвертых: начиная с 12 уровня всегда будет уходить по 3 дня, т.к. шаров не белого цвета будет >=3.
    в-пятых: начиная с 16 уровня всегда будут оставаться белые шары после ликвидации остальных, т.к. с этого уровня белых шаров будет >=4
    Написано
  • «Embedded systems» в русском просторечии и жаргоне — это ..?

    @res2001
    Как вариант: "встройка"
    Но обычно действительно в общении между собой ничего такого не произносится.
    Не произносится, потому что это абстрактное название специализированной области где мы все работаем.
    Но у каждого есть свой проект, у проекта есть название. Поэтому при рабочем общении употребляется название проекта и все окружающие по умолчанию понимают, что это проект в области встраиваемых систем, потому что по другому на этом предприятии обычно не бывает. С заказчиками все примерно так же, т.к. там тем более обсуждается конкретный проект и нет повода применять абстрактные названия.
    Если общаешься с кем-то не из этой области, то, да, иногда, для уточнения, можно произнести "встраиваемые системы" или любой подходящий синоним, но это бывает не часто, так что язык не устает.
    Написано