【问题标题】:undefined reference to functions in C++ Program using SimpleSocket written using Code::Blocks使用 Code::Blocks 编写的 SimpleSocket 对 C++ 程序中函数的未定义引用
【发布时间】:2012-10-10 15:47:42
【问题描述】:

我正在尝试在 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 上可以找到的信息来看,这种类型的错误是一个链接错误。我发现这个post 文件被添加到项目中并且不起作用。 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

再次感谢您的帮助。

【问题讨论】:

    标签: c++ linker codeblocks undefined-reference


    【解决方案1】:

    我推测您使用的是 Code::blocks + MinGW Combo,不是任何其他编译器

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

    -lwsock32
    -lws2_32
    

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

    【讨论】:

      【解决方案2】:

      编译时输入-lws2_32.lib

      【讨论】:

        猜你喜欢
        • 2017-01-24
        • 2018-06-12
        • 1970-01-01
        • 1970-01-01
        • 2012-02-07
        • 2016-08-12
        • 1970-01-01
        • 1970-01-01
        • 2011-10-24
        相关资源
        最近更新 更多