warning C4627: “#include "highgui.h"”: 在查找预编译头使用时跳

本文介绍了如何解决使用OpenCV库编写的C++程序中遇到的编译警告和标识符未找到的问题。通过调整包含顺序和修改特定头文件配置,可以有效解决这些问题,确保程序正确编译并运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源程序如下:

#include "highgui.h"
#include "StdAfx.h"

int _tmain(int argc, _TCHAR* argv[])
{
IplImage* img =cvLoadImage("E:\1.bmp");
cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);
cvShowImage("Example1",img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Examples1");
return 0;
}


已经包含了opencv头文件highgui.h,但是仍旧报warning,且定了好的标识符找不到。

解决方法

方法1、交换 #include "highgui.h"与#include "StdAfx.h"的顺序;

方法2、打开 StdAfx.h 文件,如下所示:
#pragma once
#include "targetver.h"

将 #include "highgui.h"添加到 #pragma once 下面
make: Warning: File 'main.cpp' has modification time 0.76 s in the future g++ -c main.cpp -o main.o -I/opt/MVS/include g++ -c process.cpp -o process.o -I/opt/MVS/include g++ -o main main.o GrabImage.o logger.o process.o Trigger.o interface.o inclinometer.o usart.o -L/opt/MVS/lib/aarch64 -Wl,-rpath=/opt/MVS/lib/aarch64 -lMvCameraControl -lstdc++fs -I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_dnn -lopencv_highgui -lopencv_ml -lopencv_objdetect -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_videoio -lopencv_imgcodecs -lopencv_features2d -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_core /usr/bin/ld: main.o: undefined reference to symbol 'pthread_create@@GLIBC_2.17' //lib/aarch64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status makefile:13: recipe for target 'main' failed make: *** [main] Error 1 以上是报错 以下是我的makefile文件,对makefile文件进行修改 # 定义变量 CXX = g++ CC = gcc # 添加 C 编译器变量 CFLAGS = -I/opt/MVS/include LDFLAGS = -L/opt/MVS/lib/aarch64 -Wl,-rpath=/opt/MVS/lib/aarch64 -lMvCameraControl -lstdc++fs OPENCV_FLAGS = $(shell pkg-config --cflags --libs opencv) # 目标文件列表 OBJ = main.o GrabImage.o logger.o process.o Trigger.o interface.o inclinometer.o usart.o # 默认目标 main: $(OBJ) $(CXX) -o $@ $^ $(LDFLAGS) $(OPENCV_FLAGS) # 各目标文件的编译规则 main.o: main.cpp GrabImage.h process.h logger.h Trigger.h $(CXX) -c $< -o $@ $(CFLAGS) GrabImage.o: GrabImage.cpp GrabImage.h Trigger.h interface.h inclinometer.h $(CXX) -c $< -o $@ $(CFLAGS) interface.o: interface.cpp interface.h $(CXX) -c $< -o $@ # 使用 gcc 编译 C 文件 inclinometer.o: inclinometer.cpp inclinometer.h $(CXX) -c $< -o $@ $(CFLAGS) # 使用 gcc 编译 C 文件 usart.o: usart.cpp usart.h $(CXX) -c $< -o $@ $(CFLAGS) # 使用 gcc 编译 C 文件 process.o: process.cpp process.h interface.h inclinometer.h $(CXX) -c $< -o $@ $(CFLAGS) logger.o: logger.cpp logger.h process.h $(CXX) -c $< -o $@ Trigger.o: Trigger.cpp Trigger.h $(CXX) -c $< -o $@ $(CFLAGS) # 清理 .PHONY: clean clean: rm -f main $(OBJ)
06-12
Starting >>> calibration_manager --- stderr: calibration_manager CMake Deprecation Warning at CMakeLists.txt:11 (cmake_policy): The OLD behavior for policy CMP0072 will be removed from a future version of CMake. The cmake-policies(7) manual explains that the OLD behaviors of all policies are deprecated and that a policy should be set to OLD only under specific short-term circumstances. Projects should be ported to the NEW behavior and not rely on setting a policy to OLD. ** WARNING ** io features related to pcap will be disabled ** WARNING ** io features related to png will be disabled /usr/bin/ld: warning: libopencv_highgui.so.4.5d, needed by /home/lh/business_logic_modules/src/component_packages/calibration_manager/../../../mobile_robot_platform/ros2_ws/install/calibration_cameraimu/lib/calibration_cameraimu/libcalibration_cameraimu.so, may conflict with libopencv_highgui.so.3.4 /usr/bin/ld: warning: libopencv_video.so.4.5d, needed by /home/lh/business_logic_modules/src/component_packages/calibration_manager/../../../mobile_robot_platform/ros2_ws/install/calibration_cameraimu/lib/calibration_cameraimu/libcalibration_cameraimu.so, may conflict with libopencv_video.so.3.4 /usr/bin/ld: warning: libopencv_calib3d.so.4.5d, needed by /home/lh/business_logic_modules/src/component_packages/calibration_manager/../../../mobile_robot_platform/ros2_ws/install/calibration_cameraimu/lib/calibration_cameraimu/libcalibration_cameraimu.so, may conflict with libopencv_calib3d.so.3.4 /usr/bin/ld: /home/lh/business_logic_modules/src/component_packages/calibration_manager/../../../mobile_robot_platform/ros2_ws/install/calibration_cameraimu/lib/calibration_cameraimu/libcalibration_cameraimu.so: undefined reference to `KeyFrameDatabase::KeyFrameDatabase()' collect2: error: ld returned 1 exit status gmake[2]: *** [CMakeFiles/calibration_manager_node.dir/build.make:333:calibration_manager_node] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:137:CMakeFiles/calibration_manager_node.dir/all] 错误 2 gmake: *** [Makefile:146:all] 错误 2 ---
最新发布
07-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值