Dev C++的undefined reference to `__imp_htons'或codeclock的undefined reference to'WSAStartup to@8'相关编译器错

实在是忍不住吐槽,确实是花费了很多时间来解决,度娘搜索有时候差一点关键字就搜不到想要的(准确是差十万八千里)。总结一下吧,上面两个问题我都遇到了,同一段代码不同编辑器,类似的是都是显示未定义相关。未引入头文件的缘故。我测试的是一段简单的Socket程序。 
如果是codeblock问题可以往下跳转,跳过前奏: 
DEVC++报错:

C:\Users\persenal computer\Desktop\test\Server.o    Server.cpp:(.text+0x3f): undefined reference to `__imp_WSAStartup'
C:\Users\persenal computer\Desktop\test\Server.o    Server.cpp:(.text+0x6b): undefined reference to `__imp_socket'
C:\Users\persenal computer\Desktop\test\Server.o    Server.cpp:(.text+0xa9): undefined reference to `__imp_htons'
C:\Users\persenal computer\Desktop\test\Server.o    Server.cpp:(.text+0xdc): undefined reference to `__imp_bind'
C:\Users\persenal computer\Desktop\test\Server.o    Server.cpp:(.text+0x105): undefined reference to `__imp_closesocket'
C:\Users\persenal computer\Desktop\test\Server.o    Server.cpp:(.text+0x155): undefined reference to `__imp_recvfrom'
C:\Users\persenal computer\Desktop\test\Server.o    Server.cpp:(.text+0x182): undefined reference to `__imp_inet_ntoa'
C:\Users\persenal computer\Desktop\test\Server.o    Server.cpp:(.text+0x1f3): undefined reference to `__imp_sendto'
e:\dev c++\dev-cpp_gr\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe Server.o: bad reloc address 0x10 in section `.xdata'
C:\Users\persenal computer\Desktop\test\collect2.exe    [Error] ld returned 1 exit status
25      C:\Users\persenal computer\Desktop\test\Makefile.win    recipe for target 'Server.exe' failed

上述错误就是一堆未定义,一般这时dev会跳转到自动生成的Makefile.win文件里,并在这里

$(BIN): $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)

显示报错信息,很明显是连接出了错误导致未成功生成.exe文件,并不是代码问题,也就是环境问题了,然后我通过更换编译g++版本、换成32位编译(说实话问题确实出在64和32这里了,但不知道为啥dev不认账非得按64位编译的来,也许没设置对)等都出不来,于是乎我就更换了codeclock尝试。 
发现了codeblock报以下错误:

||=== Client, Debug ===|
\Client\src\Client.cpp|8|warning: ignoring #pragma comment |
\Client\src\Client.cpp||In function 'int main(int, char**)':|
\Client\src\Client.cpp|14|error: 'WSASitartup' was not declared in this scope|
||=== Build finished: 1 errors, 1 warnings ===|

很相似的错误,确实就是环境问题了,我对codeblock比较熟悉,因此上述错误在我调试下可以通过 
针对10.05(比较老)的版本: 
Settings -> Compiler and debugger-> Global compiler settings-> Linker settings 
针对13.12版本: 
Settings -> Compiler settings -> Global compiler settings-> Linker settings 
注意我标注黑体部分路径你们肯定是要按照自己codeblocks的安装路径变换的,然后在Others linker Options里面添加:-lws2_32,重启codeblocks,测试一下应该就好了,如果还是不行,在刚刚的路径下的Link libraries里面点击Add按钮输入C:\ProgramFiles(x86)\CodeBlocks\MinGW\lib\libws2_32.a 
记住标黑体的要根据自己安装路径来更换。

Dev C++的undefined reference to `__imp_htons'或codeclock的undefined reference to'WSAStartup to@8'相关编译器错_第1张图片

既然找到真正问题所在,然后更换到dev上去更改(因为他们g++都是一样的),我们在:工具->编译选项(第一项) 打开后下面有个"在连接器命令行加入以下命令",打上勾,如果-static-libgcc这些的话,删掉,并且加上-lws2_32保存就可以了。

Dev C++的undefined reference to `__imp_htons'或codeclock的undefined reference to'WSAStartup to@8'相关编译器错_第2张图片

吐槽以下,dev这个编译器要不是改别人代码我真不会去用它,很多设置看不懂.........也许我还是太年轻

+

你可能感兴趣的:(编译器)