FLTK - Ma c iOS изображение не отображается - PullRequest
1 голос
/ 03 апреля 2020

Я использую библиотеку FLTK (версия 1.3.5) на iOS Мохаве 10.14.6: я написал эту простую программу

#include <stdlib.h>
#include <FL/Fl.H>
#include <FL/platform.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_JPEG_Image.H>
#include <FL/Fl_PNG_Image.H>
#include <FL/Fl_Box.H>

int main(int argc, char **argv) {

    Fl_Window *G_win = 0;
    G_win = new Fl_Window(650,650,"test");

    Fl_Box* BG = new Fl_Box(0,0,650,650);
    Fl_PNG_Image *bg = new Fl_PNG_Image("scheme.png");
    BG->image(bg);

    Fl_Box* text = new Fl_Box(250,20,150,20,"There should be an image down below. Is it so?");

    G_win->end();
    G_win->show(argc, argv);
    return Fl::run();
}

и скомпилировал ее с помощью следующего файла Makefile (найдено ) здесь ):

CC  = $(shell fltk-config --cc)
CXX = $(shell fltk-config --cxx)

CFLAGS   = $(shell fltk-config --cflags) -Wall -O3 -I/other/include/paths...
CXXFLAGS = $(shell fltk-config --cxxflags) -Wall -O3 -I/other/include/paths...

LINKFLTK = $(shell fltk-config --ldstaticflags)
LINKFLTK_GL = $(shell fltk-config --use-gl --ldstaticflags)
LINKFLTK_IMG = $(shell fltk-config --use-images --ldstaticflags)

STRIP      = strip
POSTBUILD  = fltk-config --post # Required on OSX, does nothing on other platforms, so safe to call

all: myApp

main.o: main.cpp 
    $(CC) -c $< $(CCFLAGS)

myApp:  main.o 
    $(CXX) -o $@ main.o  $(LINKFLTK_IMG) $(LINKFLTK_GL)
    $(STRIP) $@
    $(POSTBUILD) $@  # only required on OSX, but call it anyway for portability

Я получаю, следовательно, двоичный файл myApp и приложение myApp: когда я набираю ./myApp в оболочке, все работает нормально (верхнее изображение), тогда как дважды - при нажатии на значок изображение не отображается (нижнее изображение).

Executing the binary double clicking on the app

Я не получил никаких ошибок во время компиляция, ни предупреждения. Есть ли проблемы с Makefile? Это Ма c iOS связанный?

1 Ответ

1 голос
/ 29 апреля 2020

Полагаю, это так просто, потому что FLTK пытается загрузить файл PNG из папки current . Когда вы выполняете ./myApp в оболочке, она запускается в той же папке, где находится файл PNG. Однако, когда вы дважды щелкаете мышью, ваш текущий путь - это «кто знает, где».

Самое простое «исправление» - использование абсолютного пути (что-то вроде «/home/youruser/work/myapp/scheme.png». "), перекомпилируйте приложение и запустите его. - Должно работать, если вы указали полный путь к файлу.

...