Я пытаюсь написать программу на C ++ в Code :: Blocks, которая использует SimpleSockets. Файлы в моей программе находятся в моей программе: main.cpp, simplesocket.cpp, passivesockets.cpp, activesockets.cpp, simplesocket.h, passivesockets.h, activesockets.h. Все эти файлы находятся в одном каталоге и включены в main.cpp с использованием кавычек (#include «simplesocket.h»). Когда я пытаюсь скомпилировать его, я получаю некоторые из следующих ошибок.
————— Сборка: отладка в sys32 —————
g ++. exe -Wall -g -I «C: \ Documents and Settings \ Администратор \ Мои документы \ Загрузки \ curl-7.27.0-devel-mingw32» -IC: \ MinGW \ mingw32 -IC: \ MinGW \ lib \ gcc \ mingw32 -IC: \ MinGW \ lib \ gcc \ mingw32 \ 4.7.0 -IC: \ MinGW \ lib \ gcc \ mingw32 \ 4.7.0 \ include -IC: \ MinGW \ lib \ gcc \ mingw32 \ 4.7.0 \ include \ c ++ \ backward -IC: \ MinGW \ lib \ gcc \ mingw32 \ 4.7.0 \ include \ c ++ \ mingw32 -c C: \ system32 \ sys32 \ main.cpp -o obj \ Debug \ main.o
В файле из C: \ system32 \ sys32 \ ActiveSocket.h: 46: 0,
из C: \ system32 \ sys32 \ main.cpp: 2:
неопределенная ссылка на `_htons @ 4
неопределенная ссылка на `_inet_addr @ 4
неопределенная ссылка на `_inet_addr @ 4
неопределенная ссылка на…………..
неопределенная ссылка на…………..
Эти ошибки происходят из SimpleSockets.cpp, PassiveSockets.cpp и ActiveSockets.cpp. Из того, что я могу найти в StackOverflow, этот тип ошибки является ошибкой компоновки. я нашел это сообщение файлы добавляются в проект, и это не работает. В StackOverflow много всего, но я не могу найти способ заставить его работать. Я ищу, где в code :: blocks я мог бы вручную связать другие файлы .cpp. Я даже пытался изменить компиляторы с migw32-g ++ на g ++, просто чтобы посмотреть, что произойдет.
Я также пытался собрать с помощью команды -lw2_32.lib, но все равно получаю те же ошибки. Ниже приведен вывод после добавления этой команды.
————— Сборка: отладка в sys32 —————
g++.exe -Wall -g -lws2_32.lib -I"C:\Documents and Settings\Administrator\My Documents\Downloads\curl-7.27.0-devel-mingw32" -IC:\MinGW\mingw32 -IC:\MinGW\lib\gcc\mingw32 -IC:\MinGW\lib\gcc\mingw32\4.7.0 -IC:\MinGW\lib\gcc\mingw32\4.7.0\include -IC:\MinGW\lib\gcc\mingw32\4.7.0\include\c++\backward -IC:\MinGW\lib\gcc\mingw32\4.7.0\include\c++\mingw32 -c C:\system32\sys32\PassiveSocket.cpp -o obj\Debug\PassiveSocket.oIn file included from C:\system32\sys32\ActiveSocket.h:46:0,from C:\system32\sys32\PassiveSocket.h:45,from C:\system32\sys32\PassiveSocket.cpp:43:
PassiveSocket.cpp:70: undefined reference to htons@4
PassiveSocket.cpp:78: undefined reference to htonl@4
PassiveSocket.cpp:82: undefined reference to inet_addr@4
Спасибо еще раз за помощь.
Я понимаю, что вы используете Code :: blocks + MinGW Combo и не любой другой компилятор.
Перейдите в Проект-> Параметры сборки
Перейдите на вкладку «Настройки компоновщика» и добавьте следующее в многострочное текстовое поле «Другие параметры компоновщика»: —
-lwsock32
-lws2_32
Не забудьте поместить каждую запись в новую строку.
Обратите внимание, что я пропустил расширение файла «.lib»
положил -lws2_32.lib
во время компиляции.