OpenCV不适用于套接字连接

时间:2019-12-23 12:17:19

标签: c++ sockets opencv server

我需要有关我制作的程序的帮助。

这是一个简单的客户端服务器连接程序,可以很好地运行,但是一旦我添加#include任何与openCV相关的内容,连接就会立即立即失败,好像根本没有尝试。

我在网上发现的唯一相关信息是这篇文章: Socket doesn't work, when opencv libriary is added

这是代码,只要将opencv #include注释掉,它就可以正常工作,但是,如果完全添加它们,它将始终无法连接。

#define _WINSOCK_DEPRECATED_NO_WARNINGS

#include <iostream>
#include <winsock2.h>
#include <string>

//#include <opencv2/opencv.hpp>
//#include <opencv2/objdetect.hpp>
//#include <opencv2/imgcodecs.hpp>
//#include <opencv2/highgui/highgui.hpp>
//#include <opencv2/imgproc/imgproc.hpp>

using namespace std;
//using namespace cv;

#pragma comment(lib, "Ws2_32.lib")

int main()
{
    WSADATA WSAData;
    SOCKET server, client;
    SOCKADDR_IN serverAddr, clientAddr;

    WSAStartup(MAKEWORD(2, 0), &WSAData);
    server = socket(AF_INET, SOCK_STREAM, 0);

    serverAddr.sin_addr.s_addr = inet_addr("addresshere");
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(porthere);

    bind(server, (SOCKADDR*)&serverAddr, sizeof(serverAddr));
    listen(server, 0);

    cout << "Listening for incoming connections..." << endl;

    int clientAddrSize = sizeof(clientAddr);
    client = accept(server, (SOCKADDR*)&clientAddr, &clientAddrSize);

    cout << client << "\n";
}

1 个答案:

答案 0 :(得分:0)

评论中的答案:使用命名空间std删除, 并只是在cout行上添加了std ::,现在可以使用了。

貌似它引起了opencv的一些问题,但是当它消失时它就可以工作了。