1

我正在尝试编译 gsoap网站中解释的 calc 示例,但没有成功。这是我的 .pro 文件的外观。

 QT += network \
    xml
QT -= gui
TARGET = gsoap_c
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
    soapcalcProxy.cpp \
    stdsoap2.cpp \
    soapC.cpp
HEADERS += soapcalcProxy.h \
    stdsoap2.h \
    soapH.h \
    calc.h
OTHER_FILES += calc.nsmap

当我编译应用程序时,我得到 93 个未定义的引用。以下是其中的几个

C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:593: undefined reference to `sendto@24'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:595: undefined reference to `send@16'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:629: undefined reference to `WSAGetLastError@0'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:933: undefined reference to `recvfrom@24'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:936: undefined reference to `ntohl@4'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:941: undefined reference to `recv@16'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:3557: undefined reference to `WSAStartup@8'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:3615: undefined reference to `inet_addr@4'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:3647: undefined reference to `gethostbyname@4'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:3728: undefined reference to `socket@12'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:3760: undefined reference to `setsockopt@20'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:3902: undefined reference to `htons@4'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:4310: undefined reference to `ioctlsocket@12'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:4400: undefined reference to `__WSAFDIsSet@8'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:4397: undefined reference to `select@20'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:4531: undefined reference to `closesocket@4'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:4542: undefined reference to `shutdown@8'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:4608: undefined reference to `socket@12'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:4699: undefined reference to `bind@12'
C:\Users\Drena\Desktop\project\qt\gsoap_c/stdsoap2.cpp:4956: undefined reference to `WSACleanup@0'

看来我缺少一些网络库。有人可以帮我编译这个例子。

谢谢。

4

2 回答 2

4

已解决:我应该早点看这篇文章。它解决了我的问题。我的错。为了完整起见,我只是从该帖子中复制解决方案。

** 将 LIBS += C:\MinGW\lib\libws2_32.a 添加到您的 *.pro 文件中。libws32_a 是已弃用的 libwsock32.a 文件的当前版本。**

于 2011-04-05T16:56:53.480 回答
2

您也可以只添加“LIBS += -lws2_32”,编译器应该会为您找到正确的库路径。

于 2013-03-12T20:51:13.700 回答