0

我正在尝试在 Code::Blocks 中编写一个使用SimpleSockets的 C++ 程序。我程序中的文件在我的程序中,main.cpp、simplesocket.cpp、passivesockets.cpp、activesockets.cpp、simplesocket.h、passivesockets.h、activesockets.h。所有这些文件都在同一个目录中,并使用引号 (#include "simplesocket.h") 包含在 main.cpp 中。当我尝试编译它时,出现以下一些错误。

-------------- 构建:在 sys32 中调试 ---------------

g++.exe -Wall -g -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\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

再次感谢您的帮助。

4

2 回答 2

2

我猜您正在使用 Code::blocks + MinGW Combo 而不是任何其他编译器

转到项目->构建选项
单击“链接器设置”选项卡并在“其他链接器选项:”多行文本框中添加以下内容:-

-lwsock32
-lws2_32

请记住将每个条目放在一个新行上。
请注意,我省略了“.lib”文件扩展名

于 2013-05-27T15:31:16.917 回答
0

-lws2_32.lib编译时放。

于 2012-10-20T00:47:55.107 回答