• Почему линковщик жалуется на undefined reference?

    @res2001
    Dolarun, Кажется дошло :)
    Перенесите все включения библиотек в конец командной строки, вместе с опциями --Wl,--start-group и -Wl,--end-group.
    Вообще не совсем понятно назначение этих опций тут. В бибилотеках есть перекрестные ссылки друг на друга? Как-то это странно. Попахивает кривой архитектурой библиотек. Если бы это были библиотеки не OpenGL (или чего-нибудь настолько же глобального), то это могло быть вполне вероятно. По моему должно работать и без этих опций. Но библиотеки в конец!
  • Почему линковщик жалуется на undefined reference?

    @res2001
    Dolarun, Если убрать опции --Wl,--start-group и -Wl,--end-group что-нибудь изменится?
  • Что значит эта строка на СИ/C++?

    @res2001
    Сергей Карбивничий, Дополню немного.
    В Си нет std::function, поэтому для простоты можно объявить тип указателя на функцию с помощью typedef.
    Для вашего примера это будет выглядеть так:
    typedef double (*func_t)(double x);
    func_t func;

    Тут func_t будет типом указателя на функцию с заданной сигнатурой, а func - переменная типа func_t.

    Еще из интересных объявлений - указатель на массив фиксированной длинны или указатель на VLA массив. Запись примерно похожа на указатель на функцию, что-то типа:
    int (*arr)[10];
    Еще сложнее получится, если нужен массив указателей на функцию в подобном исполнении:
    double (*func[10])(double x);
    Если указатели на функции используются регулярно, то указатели на массивы фиксированной длины не видел ни разу в реальном коде.

    Что касается указателей на массив VLA - их в принципе удобно использовать в случае обычных многомерных динамических массивов. Объявив указатель на подобный многомерный VLA массив, можно упростить индексацию в многомерном массиве и использовать привычную индексацию вида arr[i][j][k]. И не важно, что оригинальный массив не VLA.
    Другое дело, что VLA массивов в С++ нет, они есть только в С99+. И хотя сами VLA массивы в моем описании не используются (и вообще они зло, по моему), но их поддержка должна быть иначе и указатели не будут работать. Впрочем в gcc по умолчанию можно использовать VLA в коде С++, т.к. по умолчанию включены GNU расширения. И даже с указанием ключа -pedantic на VLA он только предупреждение показыват. Нужно использовать -Werror иди -pedantic-errors, чтоб получить ошибку. Многие советуют использовать -Wall -Wextra -Werror в своих проектах, и я с ними согласен.
    Когда-то делал пример использования указателей на VLA: https://ideone.com/tYeGHY

    В микросовтовском компиляторе VLA не было в принципе. По крайней мере это было актуально для MSVS2019, сейчас может что-то уже изменилось.
  • Почему линковщик жалуется на undefined reference?

    @res2001
    Dolarun,
    Сам собрал библиотеку glfw3.(Cmake && make)

    Выглядит все нормально. Вроде бы должно собираться.
    Проверьте, чтоб собранные библиотеки точно лежали в укзанном в -L пути.
    Если не указать -L то компилятор ругнется, что библиотеки не найдены?
  • Можно ли подменить WS2_32 библиотеку и есть ли готовая обёртка?

    @res2001
    Kalombyr, да, имел ввиду этот ключ.
    Вот еще наткнулся на статью по теме: https://www.codeproject.com/Articles/325603/Inject...
    Автор пытается сделать примерно то же самое, что и вы хотите и да же с той же самой библиотекой :)
  • Можно ли подменить WS2_32 библиотеку и есть ли готовая обёртка?

    @res2001
    Kalombyr, а удалить из реестра?
    Промониторить куда лезет в реестр приложение можно с помощью утилиты regmon из набора Sysinternals. Набор можно скачать с сайта микрософт.

    Механизм поиска библиотек в любом случае будет работать, так что другие приложения вполне смогут использовать библиотеку.
  • Можно ли подменить WS2_32 библиотеку и есть ли готовая обёртка?

    @res2001
    Армянское Радио,
    с разрядностью не ошиблись?

    Это WinSock библиотека, она и на х64 с таким же именем.
  • Можно ли подменить WS2_32 библиотеку и есть ли готовая обёртка?

    @res2001
    Kalombyr, Проверьте с помощью dependency walker какие библиотеки использует приложение.
    Теоретически может быть в исполняемом файле зашит полный путь к библиотеке. Так же теоретически его можно поправить прям в исполняемом файле. Но как это посмотреть и чем править - я не вкурсе.
  • Как указать таргету CMake, чтобы он компилировался с статической библиотекой?

    @res2001
    Вспомнил еще, если у вас это дело под линуксом, то в cmake можно использовать find_package(PkgConfig REQUIRED) для включения поиска библиотек с помощью pkg_config и использовать pkg_check_modules для поиска библиотек.
    Чтоб pkg_check_modules искал статические библиотеки нужно добавить опцию --static в переменную PKG_CONFIG_ARGN, этот ключ заставит pkg_config искать статические библиотеки.
    В этом случае pkg_check_modules создает выходные переменные с префиксом STATIC, их можно использовать в target_link_libraries
    https://cmake.org/cmake/help/latest/module/FindPkg...
    Ну и man pkg_config можно посмотреть для справки.
  • Как указать таргету CMake, чтобы он компилировался с статической библиотекой?

    @res2001
    Библиотека видимо сторонняя, установленная в систему пакетным менеджером?
    Сам так не делал, но думаю, тут подойдет вариант создания цели imported library:
    add_library(... static imported ...)
    Вообще использование импортированных целей, довольно удобно - не надо самому добавлять опции для каталогов с хедерами и поиска библиотек - cmake сам все добавит, если эта информация есть в импортированном объекте.

    Так же, по моему, можно указать в target_link_library полный путь к библиотеке, включая расширение (.a/.lib).
  • С какой литературы начать изучение о сети?

    @res2001
    Так то обе хороши - достаточно толстые и занудные :)
    Обычно по сетям Олиферов рекомендуют. Таненбаума, как правило берут по архитектуре компьютеров и ОС (другие его книжки).
  • С чего начать разработку ПО?

    @res2001
    А в верхней части черепа такое ощущение, будто мозг сочится

    Может к врачу?

    Калькулятор алгоритмически не то что бы вот прям совсем банальный.
    Там может понадобится и сложный парсинг введенных строк и построение дерева/стека операций, это конечно зависит от того, что вы вкладываете в понятие "полнофункциональный калькулятор".
    Если у вас картинка реализации в голове не складывается, то возможно не хватает знаний по структурам данных, которые вам тут могут пригодится.
  • Какие формулы для решения подобных задач?

    @res2001
    L1nw0od, Составьте уравнение для объема теста для обоих случаев, приравняйте и решайте. Х будет - количество блинов для второго случая. Толщиной блина можно пренебречь, т.к. она сократится в итоговом уравнении (предполагаем, что толщина блина для обоих случаев одинакова).
  • Возможно ли создать на с++ дополнительное консольное окно?

    @res2001
    v12maksv13, Окнами (как и многим другим) управляет операционная система. Языки программирования всего лишь используют возможности, предоставляемые операционной системой. Так что на любом ЯПе, которые умеет делать вызовы операционной системы, можно сделать подобное. С++ умеет делать вызовы ОС.
    В винде есть есть целый Console API для манипулирования консолями: https://docs.microsoft.com/ru-ru/windows/console/c...
  • Почему CMake не находит исходники?

    @res2001
    Во вложенных cmakelists.txt не нужно вновь объявлять проект и свойства компилятора, это все наследуется от вышестоящего листа. Имею ввиду эти строки:
    cmake_minimum_required(VERSION 3.2)
    
    project(2DPrimitive)
    
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
    set(PROJECT_VERSION_MAJOR 0)
    set(PROJECT_VERSION_MINOR 1)

    Возможно проблема связана с этим.

    Обычно в головном cmakelists.txt устанавливаются все необходимые глобальные свойства для проекта, типа: версии стандарта, поиск внешних библиотек, дополнительные опции компилятора и т.п.
    Во вложенных листах просто определяете соответсвующие цели, используя все то что уже объявлено в вышестоящем листе (и возможно в других вложенных листах).
  • Почему после подключения к OpenVPN перестает работать интернет?

    @res2001
    Лог можешь сюда выложить в текстовом виде, спряч под спойлер. Будет полезно другим отвечающим.
    По логу вижу, что устанавливается шлюз по умолчанию (о чем писал CityCat4):
    redirect-gateway def1 ipv6 bypass-dhcp
    Поэтому весь трафик идет через ВПН, а там если на сервере разрешен выход в инет - выйдет, если нет - не выйдет.
    Эта настройка устанавливается на сервере ВПН. Если у тебя есть доступ к конфигу сервера, то можешь исправить, если нет - обращайся к тому у кого есть.
    Можно в клиентский конфиг добавить опцию:
    pull-filter ignore redirect-gateway
    Вроде как должна приводить к игнорированию опции redirect-gateway. Но я сам ее никогда не использовал, так что не поручусь :)
    https://community.openvpn.net/openvpn/wiki/IgnoreR...

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

    @res2001
    GospodinDota,
    походу придется

    Переустанавливай. Искать причину глюков можно очень долго.
    Хорошо бы с полным форматированием диска, тогда и вирусы, если они есть, удалятся.
  • Почему после подключения к OpenVPN перестает работать интернет?

    @res2001
    Нужно больше информации.
    Конфиг сервера и клиента в студию. Хорошо бы на лог клиента посмотреть при подключении.
    При подключенном ВПН на проблемном компе пинг до ВПН сервера по внутреннему ВПН адресу идет?
    На клиенте какая ОС?
  • После вылета с Доты, вся винда с ума сошла, вылетает почти все, не могу найти решение?

    @res2001
    GospodinDota, Для проверки вирусов то же есть загрузочные конструкторы. Когда-то пользовался подобным от касперского и др.веба - то же качается образ, заливается на флешку, загружаетесь с нее и проверяете, они тогда бесплатно раздавались. Как сейчас - не знаю.
    John Smith,
    Вовсе необязательно.

    Согласен, был не прав.