Ошибка компоновщика MinGW: winsock

Я использую компилятор MinGW в Windows для компиляции моего приложения на C ++ с сокетами. Моя команда для компоновки выглядит так:

g++.exe -Wall -Wno-long-long -pedantic -lwsock32 -o dist/Windows/piskvorky { there are a lot of object files } 

и я также попробовал

 g++.exe -Wall -Wno-long-long -pedantic -lws2_32 -o dist/Windows/piskvorky { there are a lot of object files } 

но в обоих случаях я получаю эту ошибку:

 build/Windows/MinGW-Windows/src/utils/tcpunit.o:tcpunit.cpp:(.text+0x33): undefined reference to `[email protected]' build/Windows/MinGW-Windows/src/utils/tcpunit.o:tcpunit.cpp:(.text+0xd0): undefined reference to `[email protected]' build/Windows/MinGW-Windows/src/utils/tcpunit.o:tcpunit.cpp:(.text+0x1ee): undefined reference to `[email protected]' build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x184): undefined reference to `[email protected]' build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x1a5): undefined reference to `[email protected]' build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x1cb): undefined reference to `[email protected]' build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x1d3): undefined reference to `[email protected]' build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x6fe): undefined reference to `[email protected]' build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x724): undefined reference to `[email protected]' build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x7f0): undefined reference to `[email protected]' build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x83c): undefined reference to `[email protected]' build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x86f): undefined reference to `[email protected]' build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x8b5): undefined reference to `[email protected]' build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x9c6): undefined reference to `[email protected]' 

У вас есть идеи, в которых проблема может быть, пожалуйста?

    Поместите -lws2_32 ПОСЛЕ списка объектных файлов – GCC ищет библиотеки и объектные файлы в том порядке, в котором они появляются в командной строке.

    Просто чтобы помочь другим зрителям:

     gcc hello.c -o hello.o -lws2_32 

    с mingw на eclipse: Menu – Projekt – Свойства – c / c ++ Build – Настройки: Регистрация «Настройки инструмента» – MinGW C Linker – Разное: Нижняя часть «Другие объекты» добавить: «D: \ Programmierung \ mingw \ lib \ libwsock32.a “, например. Никаких других записей для libwsock32.a для любых других необходимых свойств, особенно в библиотечных записях. Также нет флагов, относящихся к этому Lib.

    В:

    Меню – Проект – Свойства – c / c ++ Build – Настройки: Регистрация «Настройки инструмента» – MinGW C ++ Linker – Разное: Нижняя часть «Другие объекты»

    Добавьте: libwsock32.a из папки bin MinGW .

    Привет, я только что преодолел проблему выше …

    Итак, сначала некоторые наблюдения …

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

    Cygwin поставляется с предварительно скомпилированными библиотеками boost, но кто знает, какая версия. Я уверен, что можно проверить, но у кого есть время, чтобы сделать это правильно? Я не связываюсь с библиотеками повышения cygwin или streamовыми библиотеками mingw, я построил boost с нуля, используя gcc на windows (cygwin). Компиляция отлично справилась.

    На момент написания этой статьи на версию 1.47.0 я верю.

    Уже тот факт, что cygwin использует версию (x?) И boost – 1.47.0, может стать серьезной проблемой. Представьте, что вы используете в качестве повышения.

    Я использовал код, разработанный в версии 1.42, и имел связанные с ним ошибки компоновщика. Скомпилированный код, заголовки найдены и т. Д. … а затем я получил неопределенную ссылку на WSA и т. Д. И т. Д. … opensocket this, close socket, который и т. Д ….

    Таким образом, для повышения производительности сети, для создания сетевых сокетов требуется библиотека платформы, в которой была найдена в виде ws2_32 для Windows и для сокета для Linux.

    Поэтому, если вы правильно используете boost и включаете в себя правильные библиотеки систем повышения, вам также может понадобиться библиотека конкретной ОС для доступа к некоторым ресурсам (в этом случае сети).

    После этого исчезают ошибки компоновщика. Вероятно, очевидно, чтобы ветераны активизировали то, что здесь происходит, но я не смог найти четкий ответ через Google.

    Interesting Posts

    Android AutoCompleteTextView с фильтрацией пользовательских адаптеров не работает

    Как использовать веб-камеру в эмуляторе Android для захвата живого изображения?

    Приведение полиномиальной модели к данным в R

    Как обновить токен доступа с помощью токена обновления?

    Как работают malloc () и free ()?

    как я могу получить случайную базу данных Firebase

    RequestDispatcher.forward () vs HttpServletResponse.sendRedirect ()

    Как оптимизировать vlookup для высокого количества поиска? (альтернативы VLOOKUP)

    Как сканировать строки с пробелами в них с помощью scanf ()?

    Сравнение типов с нулевым значением в Linq to Sql

    Какой самый сложный или самый непонятный аспект LINQ?

    Встроенный блок IE8 не работает

    Перемещение папки ProgramData Windows 7 после установки

    Можно ли настроить цвета Windows 8.1 аналогично тому, как это было с Win95 в «Advanced Appearance Settings»?

    Как создать загрузочный USB из загрузочного ISO с командной строкой в ​​Linux?

    Давайте будем гением компьютера.