https://blog.csdn.net/zeng133/article/details/7935281

虽然我的情况和上面不太一样,但问题的原因是一样的:

就是有一个包含#include <boost/asio.hpp>的头文件A.h,和一个包含windows.h的头文件B.h。而B.h在main.cpp的顺序在A.h之前。

调整头文件顺序就好了~

参考链接:https://blog.csdn.net/zeng133/article/details/7935281虽然我的情况和上面不太一样,但问题的原因是一样的:就是有一个包含#include &amp;lt;boost/asio.hpp&amp;gt;的头文件A.h,和一个包含windows.h的头文件B.h。而B.h在main.cpp的顺序在A.h之前。调整头文件顺序就好了~... #include #include 编译器会报错,fatal error C1189: #error : WinSock .h has already been included #defin
这个问题看起来像是一个编译 错误 ,可能是因为在代码中重复包含了 winsock .h头文件。你可以尝试在代码中查找并删除多余的头文件包含语句,或者使用预编译指令来避免重复包含头文件。例如: #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include <windows.h> #include < winsock 2.h> #include <ws2tcpip.h> 这样可以避免重复包含 winsock .h头文件。如果问题仍然存在,请提供更多的上下文信息,以便我更好地理解和解决问题。
Benson_0308: 为更好理解,标注了一下各点的位置 // if (polyContours[maxArea][0].y < polyContours[maxArea][1].y) { // srcPoints[0] = polyContours[maxArea][0]; //左下 // srcPoints[3] = polyContours[maxArea][1]; //左上 // else { // srcPoints[0] = polyContours[maxArea][1]; // srcPoints[3] = polyContours[maxArea][0]; // if (polyContours[maxArea][2].y < polyContours[maxArea][3].y) { // srcPoints[1] = polyContours[maxArea][2]; //右下 // srcPoints[2] = polyContours[maxArea][3]; //右上 // else { // srcPoints[1] = polyContours[maxArea][3]; // srcPoints[2] = polyContours[maxArea][2]; 利用OpenCV提取图像中的矩形区域(PPT屏幕等) Benson_0308: 9 、10 改为3 、4可以跑起来,效果很好谢谢分享! // if (polyContours[maxArea][2].y < polyContours[maxArea][3].y) { // srcPoints[1] = polyContours[maxArea][2]; // srcPoints[2] = polyContours[maxArea][3]; // else { // srcPoints[1] = polyContours[maxArea][3]; // srcPoints[2] = polyContours[maxArea][2]; Win10 x64 vs2017 下配置Ceres Solver 环境 蜂蜜辣条和芝士饼干: