未定义的结构 'addrinfo' winsock2
Undefined struct 'addrinfo' winsock2
我遇到了一个错误,但我没有找到任何解决方案(即使是通过互联网)
我创建了一个Qt
应用程序来使用TCP
协议接收数据并使用QcustomPlot
绘制它们。
我有以下文件:
mainwindow.h :
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_mainwindow.h"
#include <QVector>
#include <iostream>
class MainWindow: public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = Q_NULLPTR);
// ...
private:
struct addrinfo _hints;
struct addrinfo* _result = NULL;
// ...
};
mainwindow.cpp :
#pragma once
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdlib.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
#include "mainwindow.h"
#include <QVector>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//...
}
和main.cpp文件:
#include "mainwindow.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
我有以下错误:
'MainWindow::hints' uses undefined struct 'addrinfo' (编译源文件main.cpp).
我不明白为什么会出现此错误,因为我在 microsoft tutorial 之后的经典控制台应用程序中测试了相同的程序并且它正在运行。
我相信它来自于包含,但我仍然不知道是哪一个导致了它。
您需要 #include
在您的 mainwindow.h
中定义 struct addrinfo
的内容,因为您的 MainWindow
class 具有该类型的成员变量。目前,您仅在 *.cpp
文件中包含所有套接字内容。
您使用 #define WIN32_LEAN_AND_MEAN
来防止包含许多依赖的头文件并使您显式包含所需的头文件。至于 addrinfo
你必须 #include <ws2def.h>
.
我遇到了一个错误,但我没有找到任何解决方案(即使是通过互联网)
我创建了一个Qt
应用程序来使用TCP
协议接收数据并使用QcustomPlot
绘制它们。
我有以下文件:
mainwindow.h :
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_mainwindow.h"
#include <QVector>
#include <iostream>
class MainWindow: public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = Q_NULLPTR);
// ...
private:
struct addrinfo _hints;
struct addrinfo* _result = NULL;
// ...
};
mainwindow.cpp :
#pragma once
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdlib.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
#include "mainwindow.h"
#include <QVector>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//...
}
和main.cpp文件:
#include "mainwindow.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
我有以下错误: 'MainWindow::hints' uses undefined struct 'addrinfo' (编译源文件main.cpp).
我不明白为什么会出现此错误,因为我在 microsoft tutorial 之后的经典控制台应用程序中测试了相同的程序并且它正在运行。 我相信它来自于包含,但我仍然不知道是哪一个导致了它。
您需要 #include
在您的 mainwindow.h
中定义 struct addrinfo
的内容,因为您的 MainWindow
class 具有该类型的成员变量。目前,您仅在 *.cpp
文件中包含所有套接字内容。
您使用 #define WIN32_LEAN_AND_MEAN
来防止包含许多依赖的头文件并使您显式包含所需的头文件。至于 addrinfo
你必须 #include <ws2def.h>
.