нулевая копия в приложении Qt в Stack Overflow

вот программа, которую я написал для реализации нулевого копирования в приложении Qt, но с некоторыми ошибками, написанными ниже:

//client.h
#ifndef CLIENT1_H
#define CLIENT1_H

#include <QObject>
#include <QString>
#include <QtNetwork/QTcpSocket>
#include <QtNetwork/QtNetwork>
class Client: public QObject
{
Q_OBJECT
public:
Client(QObject* parent = 0);
~Client();
void start(QString address, quint16 port);
public slots:
void startTransfer();
private:
QTcpSocket client;
};

#endif // CLIENT1_H

//client.cpp
#include "client1.h"#include <QtNetwork/QHostAddress>
#include <MSWSockDef.h>
#include <MSWSock.h>
Client::Client(QObject* parent): QObject(parent)
{
connect(&client, SIGNAL(connected()),
this, SLOT(startTransfer()));
}

Client::~Client()
{
client.close();
}

void Client::start(QString address, quint16 port)
{
QHostAddress addr(address);
client.connectToHost(addr, port);
}

void Client::startTransfer()
{
int TransmitFile( client,
hfile,
NULL,
NULL,
NULL,
NULL,
TF_USE_SYSTEM_THREAD
);
}

//main.cpp
#include <QCoreApplication>
#include <fstream>
#include <iostream>
#include "client1.h"#include <QtNetwork/QtNetwork>
#include <Windows.h>

using namespace std;

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
HFILE hfile;
//Creates an instance of ofstream, and opens example.txt
ofstream a_file ( "example.txt" );
// Outputs to example.txt through a_file
a_file<<"This text will now be inside of example.txt";
// Close the file stream explicitly
hfile = a_file;
//a_file.close();
//hfile = a_file.open("example.txt");
//hfile = a_file.open("example.txt",ios_base::app);
Client client;
client.start("127.0.0.1", 8888);

return a.exec();
}

Ошибки, как показано ниже:

C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\MSWSock.
error: C2061: syntax error : identifier 'LPWSAMSG'

C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\MSWSock.h
error: C4430: missing type specifier - int assumed. Note: C++ does not support default-int

C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\MSWSock.h
error: C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Я знаю, что есть ошибки в transfile () api, но они могут быть удалены, как насчет вышеупомянутых ошибок? `Введите код здесь?

1

Решение

выполнив все вышеперечисленное, просто запустите qmake один раз, он заработает.

1

Другие решения

Возможно, вам нужно будет включить Winsock2.h, вы можете попробовать это?

1

Попробуй удалить Mswsockdef.h включают.

…Заголовочный файл Mswsockdef.h, который автоматически включается в
Заголовочный файл Mswsock.h. Заголовочный файл Mswsockdef.h никогда не должен быть
используется напрямую.

Источник

1
По вопросам рекламы [email protected]