Задать вопрос
  • Как не собирать повторно зависимость при сборке проекта в cmake?

    @res2001
    У вас либа в проекте в виде бинарника лежит?
    Тогда можете просто ее указывать в target_link_libraries().
    Если либа в исходниках и ее нужно просто один раз собрать, то оно в принципе так и работает по умолчанию.
    Да в каталог с либой cmake будет заходить при каждой сборке. Ведь конфиг cmake для либы лежит в каталоге с либой и по другому он просто не знает на какие зависимости нужно смотреть. Кроме того пока не проверит каждый файл на предмет изменений, cmake не может узнать не изменилось ли чего в библиотеке. Но пересобирать библиотеку cmake не будет, если нет необходимости.
  • Зачем используют константы для объявления длины массива?

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

    При этом массив объявляется, конечно, с использованием константы.

    Для VLA массивов выражение ДлиннаМассива(массив) вычисляется на этапе выполнения. Вообще лучше не использовать VLA, особенно в С++.
  • Как вызвать класс комплексное число?

    @res2001
    im_noob, Я так и подумал.
    Complex complex = polynom.computePolynomial();
    complex.show();
  • Как вызвать класс комплексное число?

    @res2001
    im_noob,
    его результат вывести на экран

    computePolynomial() сам ничего не выводит, он только вычисляет. Это ясно по его коду.
    Вам надо вывести результат на экран любым способом, который придумаете. Впрочем в коде уже все придумано, нужно только использовать.
  • Как получить доступ к винчестеру?

    @res2001
    Давно не слышал употребление слова винчестер :)
    Вы его употребляете тут в значении "жесткий диск"?
    Если да:
    Какие сегменты на жестком диске?
    Там есть файлы, каталоги, сектора, головки, цилиндры, ... Сегментов нет. Что же вам нужно?
  • Как связать динамическую библиотеку с кодом cpp?

    @res2001
    брюликам не важно сколько ты н, При запуске начинают играть уже другие правила!
    В линуксе при запуске программ динамические библиотеки не ищутся в текущем каталоге или в каталоге откуда запускается программа, они ищутся только в определенных местах. Обычно это /lib, /usr/lib, ...
    Каталоги поиска библиотек можно сконфигурировать с помощью команды ldconfig.
    Но проще запускать программу так:
    LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ./a.out
    Т.е. перед запуском вы прописываете текущий катало (".") в переменную LD_LABRARY_PATH и загрузчи начинает искать библиотеки в текущем каталоге. Но в продакшене нужно библиотеку положить в какой-либо путь "по умолчанию".
  • Как связать динамическую библиотеку с кодом cpp?

    @res2001
    брюликам не важно сколько ты н,
    В /root у вас должен лежать файл libselenium.so

    Читайте внимательно!
  • Как связать динамическую библиотеку с кодом cpp?

    @res2001
    брюликам не важно сколько ты н, Когда вы линкуете статическую библиотеку, то она вся лежит в lib. Когда линкуете динамическую, то в lib лежат ссылки на экспортируемые функции соответствующей .dll. В so эта информация хранится в самом файле и lib не нужен.
    Лежит но г++ его прямо не хочет видеть.

    Может вы не правильно указываете имя библиотеки в команде, нет прав на файл библиотеки, на библиотеке нет права на выполнение... Тут уже какие-то элементарные причины. Ищите где вы ошиблись.
    Давайте сюда полный вывод g++.
  • Как связать динамическую библиотеку с кодом cpp?

    @res2001
    брюликам не важно сколько ты н,
    cannot find -lsel

    У вас библиотека selenium?
    На самом деле в линуксе все проще. В винде для линковки библиотеки нужна не сама библиотека (.dll), а промежуточный файл .lib, при этом сама .dll понадобится только при выполнении программы.
    В линуксе этой прослойки .lib нет, поэтому немного проще. Но в целом все аналогично должно работать.
    В /root у вас должен лежать файл libselenium.so
  • Как связать динамическую библиотеку с кодом cpp?

    @res2001
    брюликам не важно сколько ты н, Возможно пример устарел. Такое часто бывает - интерфейс меняется, а примеры и документация не успевают за изменениями.
    Всегда ориентируйтесь на заголовочные файлы, которые используются при сборке - т.к. компилятор не читает документацию, он работает с исходниками и заголовками.

    На счет сборки:
    1. в опции -l не надо указывать префикс lib, т.е. просто -lselenium
    2. Линковщик должен знать где фактически лежит библиотека. Если она лежит не по стандартному пути уже известному линковщику, то нужно при сборке использовать ключ -L<путь к бинарникам библиотеки>.
    3. Компилятор должен знать где искать заголовочные файлы библиотеки, если они расположены не по стандартным путям. Чтоб указать дополнительный путь к заголовочным файлам нужно использовать ключ -I<путь к заголовкам библиотеки>
  • Почему скорость битовых операций отличается в 1000 раз?

    @res2001
    bakdurak,
    не должен выкинуть

    Я читал коменты. Да там все верно написано.
    Вот только в дополнение к написанному в bit у вас сейчас простое присваивание, а следовательно на выходе из цикла имеет значение только последняя итерация. Если я это увидел, то и компилятор то же увидет :)
    И вывод переменной в конце тут не поможет - вам надо каким-то образом использовать значения всех итераций цикла bit += - самый простой вариант это сделать.
  • Где ошибка в коде?

    @res2001
    Вы откомпилируйте программу. Любой компилятор вам скажет где ошибка в коде.
    Если вы не знаете как интерпретировать сообщение компилятора, то давайте его сюда.
    Так сходу скажу, что ошибка есть тут: *x[i]= *x[i] * *x[i];
    Нужно писать так: x[i]= x[i] * x[i];
  • Почему скорость битовых операций отличается в 1000 раз?

    @res2001
    bakdurak, Кстати, есть шанс, что компилятор вообще выкинет цикл for (int j = 0; j < 8; ++j).
    И оставит от него в лучшем случае последнюю итерацию. А если будет совсем молодец, то выкинет и верхний цикл то же.
    По уму вам нужно делать bit += ..., что бы у компилятора не было повода что-то выкинуть из кода.
  • Почему скорость битовых операций отличается в 1000 раз?

    @res2001
    bakdurak, Разверните вручную этот цикл for (int j = 0; j < 8; ++j)
    Т.е. просто запишите 8 операций, маску указывайте константой, а не из массива и не сдвигом.
    Это будет самый быстрый вариант, имхо.
    Вообще компилятор может и сам это сделать, при каком-то уровне оптимизации, но тут не угадаешь.

    PS: Что у вас в задаче этот участок кода настолько критичен? Я бы не стал заморачиваться с его оптимизацией в принципе - так как на одиночных операциях тут прирост производительности в оптимизированной версии мизерный.
  • Соглашаться ли получать меньше на испытательном сроке?

    @res2001
    Согласен с Сергей Горностаев но процент великоват. У меня на последнем месте то же был 3 месяца испытательный срок, платили меньше на ~12%. Если, по вашим меркам, компания того стоит , то есть смысл соглашаться на испытательный срок. На счет снижения оплаты стоит обсудить с работодателем, если вам кажется, что это слишком много.
    Вообще на моей практике практически везде были испытательные сроки с пониженной оплатой, в т.ч. и на вакансиях не связанных с разработкой.
  • RDP из другой подсети подключается через раз. Как решить?

    @res2001
    Dmitriy, Судя по всему клиент просто сообщает, что сервер отвалился. Нужно смотреть журнал на сервере.
  • RDP из другой подсети подключается через раз. Как решить?

    @res2001
    Для начала смотрите журнал сервера на предмет ошибок подключения RDP. Определитесь с ошибкой, а там уж можно будет и решение какое-то искать.
  • Какая проблема в запуске простейших сценариев?

    @res2001
    antinatalismmm, У меня запускается. Попробуйте запустить вручную в командной строке. Какой результат?
    Таким образом можно открывать любые файлы, которые открываются двумя кликами мышки в проводнике или раб.столе.
    Иногда какой-нибудь софт переопределяет команду start, тогда родная команда может не срабатывать. Но в этом случае помогает запуск start из командной строки. Вы похоже так всегда и делаете.
  • Какая проблема в запуске простейших сценариев?

    @res2001
    запускайте так: start "" "<путь к файлу>"
    Если первый параметр в кавычках, то он воспринимается как заголовок окна.