解决使用CImg遇到的问题:undefined reference to __imp_SetDIBitsToDevice

问题描述

这学期计算机视觉课程的第一个小作业需要用到CImg这个库,但我在Windows系统下使用g++编译,一直出现下面这样的问题:undefined reference to __imp_SetDIBitsToDevice'

1
2
C:\Users\linji\AppData\Local\Temp\ccBTBH0S.o:Ex1.cpp:(.text$_ZN12cimg_library11CImgDisplay5paintEv[_ZN12cimg_library11CImgDisplay5paintEv]+0xb7): undefined reference to `__imp_SetDIBitsToDevice'
collect2.exe: error: ld returned 1 exit status

解决办法

在百度、Stack Overflow寻找解决该问题的办法时,都没有很好的解决办法,后来在官方文档中找到在不同系统下编译的方法,一下子解决了该问题。
解决办法如下:

  1. 命令行下:在编译选项后面加上-O2 -lgdi32即可解决:

    g++ -o hello_word.exe hello_word.cpp -O2 -lgdi32

  2. Dev-C++下:在导航栏找到工具->编译选项->编译时加入以下命令-O2 -lgdi32,如下图:
    这里写图片描述

------本文结束感谢阅读------