Я уже довольно давно работаю над проектом С++. Я каждый раз открывал дисплей одним и тем же методом, передавая заданный путь в CImg<unsigned char>
, а затем передавая этот объект в CImgDisplay
, что вполне стандартно, и это работало каждый раз. Затем я начал передавать путь через аргументы командной строки, что также отлично сработало. Однако, как только я снова переключился на жесткое кодирование пути, чтобы использовать отладчик в VS Code, программа начала выдавать очень наглядную ошибку:
Немного покопавшись, я нашел немного лучшее описание ошибки:
[CImg] *** CImgDisplayException *** [instance(0,0,0,[untitled])] CImgDisplay::assign(): Failed to open X11 display.
libc++abi.dylib: terminating with uncaught exception of type cimg_library::CImgDisplayException: [instance(0,0,0,[untitled])] CImgDisplay::assign(): Failed to open X11 display.
При запуске программы из командной строки (компилируется отлично) ошибка Segmentation fault: 11
.
Я попытался найти в Интернете ту же ошибку, даже не связанную с CIMG, поскольку это ошибка, связанная с X11, но ничего не нашел. Ошибка сохранялась, когда я закомментировал всю основную функцию вместо двух строк объявления изображения и отображения. Код выглядит следующим образом:
#define cimg_use_png
#include "CImg.h"
#include <vector>
#include <algorithm>
#include <iostream>
using namespace cimg_library;
using namespace std;
int main(/*int argc, char *argv[]*/) {
//CImg<unsigned char> og_pic(argv[1]), first_anim(og_pic.width(),og_pic.height(),1,3,127);
CImg<unsigned char> og_pic("/Users/glebsvarcer/Desktop/my-stupid-little-programs/maze_solver/test13.png");
CImgDisplay disp(og_pic, "Test");
return 0;
}
я компилирую с
clang++ -g /Users/glebsvarcer/Desktop/my-stupid-little-programs/maze_solver/cleanup_pic.cpp -O2 -lm -pthread -I/usr/X11R6/include -L/usr/X11R6/lib -lm -pthread -lX11 -o cleanup -Dcimg_use_png -lpng && rm out.txt ; cleanup >> out.txt
Что может быть причиной этого? Я действительно не могу двигаться дальше в проекте без отладчика, и был бы очень признателен, если бы у кого-нибудь было решение этой проблемы.
DISPLAY
? - person Mark Setchell   schedule 10.03.2021