套接字不起作用,当添加 opencv libriary



您好所有人!我正在尝试使用C 服务器和Unity作为客户端开发 ar 应用程序。我使用 winsock 在C 服务器和Unity之间完成了简单的连接,并且它发送了简单的字符串。现在,我尝试将OpenCV添加到服务器中(想法是:它检测标记并将脐带发送到Unity)。但是,当我添加OpENCV库时,服务器停止工作正常工作(当我启动服务器时,它立即表示客户端已连接,但未启动客户端)。所以我不知道该怎么办。这是一个代码:

#include "stdafx.h"
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#pragma comment(lib,"ws2_32.lib")
#include <WinSock2.h>
#include <iostream>
#include <string>
#include "opencv2core.hpp"
#include "opencv2imgcodecs.hpp"
#include "opencv2imgproc.hpp"
#include "opencv2highgui.hpp"
#include "opencv2aruco.hpp"
#include "opencv2calib3d.hpp"
#include <sstream>
#include <iostream>
#include <fstream>
using namespace std;
using namespace cv;
int main() {
    WSAData wsaData;
    WORD DllVersion = MAKEWORD(2, 1);
    if (WSAStartup(DllVersion, &wsaData) != 0) {
        MessageBoxA(NULL, "WinSock sturtup failed", "Error", MB_OK | MB_ICONERROR);
        exit(1);
    }
    SOCKADDR_IN addr; // socket adresy
    int addrlen = sizeof(addr);
    addr.sin_addr.s_addr = inet_addr("100.100.0.1"); //
    addr.sin_port = htons(10101);
    addr.sin_family = AF_INET; //ipv4
    SOCKET sListen = socket(AF_INET, SOCK_STREAM, NULL);
    bind(sListen, (SOCKADDR*)&addr, sizeof(addr));
    listen(sListen, SOMAXCONN);
    SOCKET newConnection;
    newConnection = accept(sListen, (SOCKADDR*)&addr, &addrlen);
    if (newConnection == 0) {
        cout << "Failed to accept the client's connection" << endl;
    }
    else {
        cout << "Client connected!" << endl;
        char MOTD[256];
        string sendData;
        cin >> sendData;
        int i;
        for (i = 0; i < sendData.length(); i++)
        {
            MOTD[i] = sendData.at(i);
        }
        send(newConnection, MOTD, i, NULL);
    }
    system("pause");
    return 0;
}

请注意,代码运行良好(当没有opencv libs时)。

删除using namespace std;using namespace cv;,并添加std::cv::。问题将被解决。

最新更新