FLTK - Mac iOS 图像未显示
FLTK - Mac iOS image not displayed
我在 iOS Mojave 10.14.6 上使用 FLTK 库(版本 1.3.5):我编写了这个简单的程序
#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 编译它(找到 here):
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
:当我在 shell 中键入 ./myApp 时,一切正常(上图),同时双击图标上没有显示图像(底部图像)。
我在编译过程中没有遇到任何错误,也没有收到警告。 Makefile 有什么问题吗? Mac iOS 相关吗?
我想这很简单,因为 FLTK 正在尝试从 current 文件夹加载 PNG 文件。当你在shell中执行./myApp
时,它是运行ning在PNG文件所在的同一个文件夹中。然而,当您双击时,您的当前路径是谁知道在哪里。
最简单的"fix" 是使用绝对路径(类似于“/home/youruser/work/myapp/scheme.png”),重新编译应用程序,然后运行。 - 如果您提供文件的完整路径,它应该可以工作。
我在 iOS Mojave 10.14.6 上使用 FLTK 库(版本 1.3.5):我编写了这个简单的程序
#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 编译它(找到 here):
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
:当我在 shell 中键入 ./myApp 时,一切正常(上图),同时双击图标上没有显示图像(底部图像)。
我在编译过程中没有遇到任何错误,也没有收到警告。 Makefile 有什么问题吗? Mac iOS 相关吗?
我想这很简单,因为 FLTK 正在尝试从 current 文件夹加载 PNG 文件。当你在shell中执行./myApp
时,它是运行ning在PNG文件所在的同一个文件夹中。然而,当您双击时,您的当前路径是谁知道在哪里。
最简单的"fix" 是使用绝对路径(类似于“/home/youruser/work/myapp/scheme.png”),重新编译应用程序,然后运行。 - 如果您提供文件的完整路径,它应该可以工作。