Bagaimanakah program C++ yang ditulis dalam vs2017 boleh disalin ke Qt Creator tanpa melaporkan ralat?
高洛峰
高洛峰 2017-05-31 10:40:01
0
1
1382

Ini adalah sekeping kod yang saya temui dalam talian Tidak ada masalah untuk meletakkannya dalam vs2017. Kebanyakan fail pengepala tidak boleh digunakan dalam Qt, dan beberapa kata kunci tidak boleh digunakan dalam Qt Ralat dan amaran akan diprogramkan di bawah tetingkap.

#include <iostream>
#include "winsock2.h"
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main(int argc, char *argv[])
{
    const int BUF_SIZE = 64;
    WSADATA wsd;//WSADATA变量
    SOCKET sServer;//服务端套接字
    SOCKET sClient;//客户端套接字
    SOCKADDR_IN addrServ;//服务器地址
    char buf[BUF_SIZE];//接受数据缓冲区
    char sendBuf[BUF_SIZE];//返回给客户端的数据
    int retVal;//返回值
                //初始化套接字动态库
    if(WSAStartup(MAKEWORD(2,2),&wsd) != 0)
    {
        cout << "WSAStartup failed!" << endl;
        return 1;
    }
    //创建套接字
    sServer = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    if(INVALID_SOCKET == sServer)
    {
        cout << "socket failed!" << endl;
        WSACleanup();//释放套接字资源
        return -1;
    }
    //服务器套接字地址
    addrServ.sin_family = AF_INET;
    addrServ.sin_port = htons(6666);
    addrServ.sin_addr.s_addr = INADDR_ANY;
    //绑定套接字
    retVal = bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));
    if(SOCKET_ERROR == retVal)
    {
        cout << "bind failed!" << endl;
        closesocket(sServer);//关闭套接字
        WSACleanup();//释放套接字资源
        return -1;
    }
    //开始监听
    retVal = listen(sServer,1);
    if(SOCKET_ERROR == retVal)
    {
        cout << "listen failed!" << endl;
        closesocket(sServer);//关闭套接字
        WSACleanup();//释放套接字资源
        return -1;
    }
    //接受客户端请求
    sockaddr_in addrClient;
    int addrClientlen = sizeof(addrClient);
    sClient = accept(sServer,(sockaddr FAR*)&addrClient,&addrClientlen);
    if(INVALID_SOCKET == sClient)
    {
        cout << "accept failed!" << endl;
        closesocket(sServer);//关闭套接字
        WSACleanup();//释放套接字资源
        return -1;
    }
    while(true)
    {
        //接受客户端数据
        ZeroMemory(buf,BUF_SIZE);
        retVal = recv(sClient,buf,BUF_SIZE,0);
        if(SOCKET_ERROR == retVal)
        {
            cout << "recv failed!" << endl;
            closesocket(sServer);//关闭套接字
            WSACleanup();//释放套接字资源
            return -1;
        }
        if(buf[0] == '0')
        {
            break;
        }
        cout << "客户端发送的数据:" << buf << endl;
        cout << "向客户端发送数据:";
        cin >> sendBuf;
        send(sClient,sendBuf,strlen(sendBuf),0);
    }
    //退出
    closesocket(sServer);//关闭套接字
    closesocket(sClient);//关闭套接字
    WSACleanup();//释放套接字资源
    return 0;
}

Mesej ralat:

C:UsersAdministrationDocumentsQtservermain.cpp:4: amaran: mengabaikan komen #pragma [-Wunknown-pragmas]
#pragma comment(lib,"ws2_32.lib")
C:UsersAdministrationDocumentscpp:1defined8. rujukan kepada `_imp__WSAStartup@8'
C:UsersAdministrationDocumentsQtservermain.cpp:24: error: undefined reference to `_imp__socket@12'
C:UsersAdministrationDocumentsQtservermain.cpp:28:undefined reference to `_imp__socket@12'
C:UsersAdministrationDocumentsQtservermain.cpp:28:undefined_referensi: UsersAdministrationDocuments Qtservermain .cpp:33: ralat: rujukan tidak ditentukan kepada `_imp__htons@4'
C:UsersAdministrationDocumentsQtservermain.cpp:36: error: undefined reference to `_imp__bind@12'
C:UsersAdministrationDocumentsQtservermain.cpp:36: error: undefined reference to `_imp__bind@12'
C:UsersAdministrationDocumentsQt:unreferenced_users soket @ 4'
C:UsersAdministrationDocumentsQtservermain.cpp:41: error: undefined reference to `_imp__WSACleanup@0'
C:UsersAdministrationDocumentsQtservermain.cpp:45: ralat: undefined reference tolisten `_Qtserver'imp .cpp:49: ralat : rujukan tidak ditentukan kepada `_imp__closesocket@4'
C:UsersAdministrationDocumentsQtservermain.cpp:50: error: undefined reference to `_imp__WSACleanup@0'
C:UsersAdministrationDocumentsQtservermain.cpp:50: error:undefined reference to `_imp__WSACleanup@0'
C:UsersAdministrationDocumentsQtserver6main.cpp:undefined .
C : UsersAdministrationDocumentsQtservermain.cpp:60: error: undefined reference to `_imp__closesocket@4'
C:UsersAdministrationDocumentsQtservermain.cpp:61: ralat: undefined reference to `_imp__WSACleanup@_mp__'cDocuments mentsQtservermain.cpp:72: ralat : rujukan tidak ditentukan kepada `_imp__closesocket@4'
C:UsersAdministrationDocumentsQtservermain.cpp:73: error: undefined reference to `_imp__WSACleanup@0'
C:UsersAdministrationDocumentsQtservermain.cpp:73: error: undefined reference to `_imp__WSACleanup@0'
C:UsersAdministrationDocumentsQtserver main.cpp:8@3 : 6 undefined reference to`undefined __
C :UsersAdministrationDocumentsQtservermain.cpp:86: error: undefined reference to `_imp__closesocket@4'
C:UsersAdministrationDocumentsQtservermain.cpp:87: ralat: undefined reference to `_imp__closesocket@4':Dosministration_Us ralat: rujukan tidak ditentukan kepada `_imp__WSACleanup@0'
collect2.exe:-1: ralat: ralat: ld mengembalikan 1 status keluar
Terdapat ralat fail pengepala dan ralat kata kunci

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(1)
大家讲道理

winsock?
Tidakkah ia memberi amaran?
amaran: mengabaikan komen #pragma [-Wunknown-pragmas]warning: ignoring #pragma comment [-Wunknown-pragmas]
链接问题.
你的qt的编译器配置的什么? mscv?

如果选的是msvc 可以试试在.pro

win32:LIBS += xxx.lib
win32:QMAKE_POST_LINK += xxx.dll

PS: qt有网络库的,可以通过qt +=networkMasalah pautan.

Apakah konfigurasi pengkompil qt anda?🎜 🎜Jika anda memilih msvc, anda boleh mencubanya dalam .pro🎜 rrreee 🎜PS: Jika qt mempunyai pustaka rangkaian, anda boleh menggunakan pustaka rangkaian qt melalui qt +=network.🎜
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!