web-dev-qa-db-ja.com

MinGWリンカーエラー:winsock

WindowsでMinGWコンパイラを使用して、ソケットを使用して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 `closesocket@4'
build/Windows/MinGW-Windows/src/utils/tcpunit.o:tcpunit.cpp:(.text+0xd0): undefined reference to `send@16'
build/Windows/MinGW-Windows/src/utils/tcpunit.o:tcpunit.cpp:(.text+0x1ee): undefined reference to `recv@16'
build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x184): undefined reference to `WSAStartup@8'
build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x1a5): undefined reference to `closesocket@4'
build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x1cb): undefined reference to `closesocket@4'
build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x1d3): undefined reference to `WSACleanup@0'
build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x6fe): undefined reference to `bind@12'
build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x724): undefined reference to `listen@8'
build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x7f0): undefined reference to `gethostbyaddr@12'
build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x83c): undefined reference to `socket@12'
build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x86f): undefined reference to `htons@4'
build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x8b5): undefined reference to `connect@12'
build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x9c6): undefined reference to `accept@12'

問題が発生する可能性のあるアイデアはありますか?

46
Gaim

置く -lws2_32オブジェクトファイルのリストの後-GCCは、コマンドラインに表示される順序でライブラリとオブジェクトファイルを検索します。

他の視聴者を助けるためだけに:

gcc hello.c -o hello.o -lws2_32
115
anon

eclipseのmingwを使用:メニュー-プロジェクト-プロパティ-c/c ++ Build-設定:「ツール設定」の登録-MinGW Cリンカー-その他:下部の「その他のオブジェクト」追加:「D:\ Programmierung\mingw\lib \たとえば、libwsock32.a」。特にライブラリエントリではない、他のプロパティでのlibwsock32.aの他のエントリは必要ありません。このLibに関連するフラグもありません。

7
Kai

に:

メニュー-プロジェクト-プロパティ-c/c ++ Build-設定:「ツール設定」の登録-MinGW C++リンカー-その他:下部の「その他のオブジェクト」

追加:libwsock32.aMinGWのbinフォルダーから。

2
Anand Paul