__imp链接错误使用g++在mingw下运行

__imp link errors using g++ running under mingw

本文关键字:mingw 运行 g++ imp 链接 错误      更新时间:2023-10-16

我有一个简单的套接字程序,我试图在Win8系统上使用g++运行mingw(两个最新版本)来编译它。我得到了常见的链接器错误

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

我试着添加-lws2_32没有运气;也就是说,它仍然找不到参考。谁能告诉我还有什么我可能遗漏的吗?

下面是完整的输出:

G:sourcekak>g++ -o ./test_client -lws2_32 test_client.C
C:UserskenkahnAppDataLocalTempccDZTr9b.o:test_client.C:(.text+0x4f): undefined reference to `__imp_inet_addr'
C:UserskenkahnAppDataLocalTempccDZTr9b.o:test_client.C:(.text+0x6b): undefined reference to `__imp_socket'
C:UserskenkahnAppDataLocalTempccDZTr9b.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:UserskenkahnAppDataLocalTempccDZTr9b.o: bad reloc address 0xc in section `.xdata'
collect2.exe: error: ld returned 1 exit status

尝试将-lws2_32放在test_client.C参数之后。gcc的链接器(ld)对可链接事物的顺序很敏感,这可能就是为什么它在链接时找不到您导入的函数的原因。