7

Win8 システムの mingw (両方の最新バージョン) で実行されている g++ を使用してコンパイルしようとしている単純なソケット プログラムがあります。一般的なリンカ エラーが発生します

undefined reference to `__imp_socket'
undefined reference to `__imp_gethostbyname'

-lws2_32 を追加しようとしましたが、うまくいきませんでした。つまり、まだ参照を見つけることができません。誰かが私が見逃している可能性のある何かを提案できますか?

完全な出力は次のとおりです。

G:\source\kak>g++ -o ./test_client -lws2_32 test_client.C
C:\Users\kenkahn\AppData\Local\Temp\ccDZTr9b.o:test_client.C:(.text+0x4f): undefined reference to `__imp_inet_addr'
C:\Users\kenkahn\AppData\Local\Temp\ccDZTr9b.o:test_client.C:(.text+0x6b): undefined reference to `__imp_socket'
C:\Users\kenkahn\AppData\Local\Temp\ccDZTr9b.o:test_client.C:(.text+0x8b): undefined reference to `__imp_connect'
d:/program files/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\kenkahn\AppData\Local\Temp\ccDZTr9b.o: bad reloc address 0xc in section `.xdata'
collect2.exe: error: ld returned 1 exit status
4

1 に答える 1

13

-lws2_32パラメータの後にを入れてみてtest_client.Cください。gcc (ld) のリンカは、リンク可能なものの順序に注意を払っています。これがおそらく、リンク時にインポートされた関数を見つけられない理由です。

于 2014-03-11T00:51:55.087 に答える