c语言对main未定义引用,C语言 编译错误:对’__ atomic_fetch_add_4’的未定义引用...

#include

using namespace cv;

int main()

{

Mat img=imread("cornea.jpg");

imshow("src",img);

waitKey(0);

return 0;

}

我编译它:

g++ main.cpp -o main `pkg-config opencv --cflags --libs`

要么

g++ main.cpp -o main -I/usr/local/opencv-3.1.0/include/opencv -I/usr/local/opencv-3.1.0/include -L/usr/local/opencv-3.1.0/lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core -lpng -lz -ltiff -ljasper -ljpeg -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lfreetype -lgthread-2.0 -lglib-2.0 -ldc1394 -lv4l1 -lv4l2 -lavcodec -lavformat -lavutil -lswscale -ldl -lm -lpthread -lrt

这给了我:

/tmp/ccoZCMRO.o:in function‘cv::Mat::release()’:main.cpp:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x22):undefined reference to‘__atomic_fetch_add_4’

collect2: error: ld returned 1 exit status

我在VM中的ubuntu 14.04终端中使用opencv 3.1.0!

您似乎混合了OpenCV库的Debug和Release版本.

https://github.com/Itseez/opencv/issues/5581

您应该只包含和链接正常的Release库,或者反复使用您自己构建的Debug库.

在您的情况下,这可能来自双包含-cflags -I /usr/local/include / opencv.我会尝试删除所有手动路径,只需编写pkg-config –cflags –libs opencv(到打包的发行版).

请注意,/usr/local/include是标准的包含路径,将始终进行搜索.您可以尝试使用-nostdinc https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html排除标准路径

另一种选择是卸载两个版本中的一个,或从标准路径中删除一个版本.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值