
现在会有一个这个问题 :

我已经照着 一个 Stack Overflow 的连接修改了, https://stackoverflow.com/questions/1372480/c-redefinition-header-files-winsock2-h
修改的方法就是:
header 文件 cpp_socket.h 文件里面的 include :
#ifndef CPP_SOCKET_H #define CPP_SOCKET_H #pragma once #define WIN32_LEAN_AND_MEAN #include <string> #include <winsock2.h> #include <ws2tcpip.h> #include <stdlib.h> #include <stdio.h> // Need to link with Ws2_32.lib, Mswsock.lib, and Advapi32.lib #pragma comment (lib, "Ws2_32.lib") #pragma comment (lib, "Mswsock.lib") #pragma comment (lib, "AdvApi32.lib") cpp 文件里面的 include :
#define _WINSOCKAPI_ #define WIN32_LEAN_AND_MEAN #include "stdafx.h" #include <Windows.h> #include <time.h> #include "image_tool.h" #include <map> #include <fmt/format.h> #include <cstdlib> #include <stdio.h> #include <string.h> #include "cpp_socket.h" Stack Overflow 里面的方法都试过了, 不知道现在的问题出在哪里?
1 woshichuanqilz OP 对还有一个 image_tool.h 的 include : #ifndef IMAGETOOL_H #define IMAGETOOL_H #include "stdafx.h" #include <windows.h> #include <nlohmann/json.hpp> #include <algorithm> #include <typeinfo> #include <string> #include <fstream> #include <streambuf> #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include <iostream> 这个是 Stack Overflow 上高票问题的解法, 我就是照这个做的。 https://i.loli.net/2019/02/17/5c693a2020d64.png 那个 h 文件如果下面写一个 main, 当做 cpp 运行的话是成功的。 |
2 woshichuanqilz OP 有了, 应该把所有的 windows.h 都放到 winsock2.h 之后 |
3 ysc3839 2019 年 2 月 17 日 via Android 看上去你有使用预编译头,这些外部 header 的 include 不应该全都放到预编译头里面吗? |