我正在使用QT Creator构建一个C plain项目。我的项目包含了一个套接字创建,我收到很多引用错误。
我的代码很简单:
#include <winsock2.h>
#include <stdio.h>
// Need to link with Ws2_32.lib
#pragma comment (lib, "Ws2_32.lib")
int main(int argc , char *argv[])
{
WSADATA wsa;
SOCKET s;
printf("\nInitialising Winsock...");
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
{
printf("Failed. Error Code : %d",WSAGetLastError());
return 1;
}
printf("Initialised.\n");
if((s = socket(AF_INET , SOCK_STREAM , 0 )) == INVALID_SOCKET)
{
printf("Could not create socket : %d" , WSAGetLastError());
}
printf("Socket created.\n");
return 0;
}
编译错误:
undefined reference to `_imp__WSAStartup@8'
undefined reference to `_imp__WSAGetLastError@0'
undefined reference to `_imp__socket@12'
undefined reference to `_imp__WSAGetLastError@0'
然后我想这意味着不包括winsock2.h
lib。如何在没有#pragma comment()
的情况下执行此操作?
答案 0 :(得分:0)
您的<dependency>
<groupId>org.glassfish.grizzly</groupId>
<artifactId>grizzly-http-server</artifactId>
<version>2.3.30</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
<version>2.25.1</version>
</dependency>
用法没问题。您需要更新项目设置并将#include <winsock2.h>
添加为链接库。
对于Qt ,只需将此行添加到.pro文件即可。假设您使用的是Microsoft编译器:
ws2_32.lib
注意:我必须从命令行中删除“build”目录,然后从Qt Creator执行“clean build”以使更改生效。