2013-05-20 78 views
0

讀取文件我有一個繪製地球的程序,它使用下面的代碼讀出紋理文件:從同一個文件夾(C++程序)

Images::RGBImage surfaceImage; 
surfaceImage=Images::readImageFile("",Vrui::openFile("/home/rodrtu/Desktop/SolarSystem/land_shallow_topo_2048.png"));` 

我有它設置的方式,僅適用於我的桌面,但我希望其他人可以訪問我的程序文件和圖片,並能夠在計算機上運行程序。我應該使用什麼而不是使用"/home/rodrtu/Desktop/SolarSystem/land_shallow_topo_2048.png"

如果我將文件夾添加到與.cpp文件相同的位置,我應該更改我的生成文件嗎? 這裏是我的makefile

VRUI_MAKEDIR := /opt/local/Vrui-2.6/share/make 
ifdef DEBUG 
    VRUI_MAKEDIR := $(VRUI_MAKEDIR)/debug 
endif 

INSTALLDIR := $(shell pwd) 

# Set resource directory: I added this images folder to the same place as my 
# .cpp file, but it still doesn't work 
RESOURCEDIR = images 

######################################################################## 
######################################################################## 

# Include definitions for the system environment and system-provided 
# packages 
include $(VRUI_MAKEDIR)/SystemDefinitions 
include $(VRUI_MAKEDIR)/Packages.System 
include $(VRUI_MAKEDIR)/Configuration.Vrui 
include $(VRUI_MAKEDIR)/Packages.Vrui 

# Set installation directory structure: 
BININSTALLDIR = $(INSTALLDIR)/$(EXEDIR) 
RESOURCEINSTALLDIR = $(INSTALLDIR)/$(RESOURCEDIR) 

######################################################################## 
######################################################################## 

PACKAGES = MYVRUI 

######################################################################## 
######################################################################## 

ALL = $(EXEDIR)/NewPlanet 

.PHONY: all 
all: $(ALL) 

######################################################################## 
#'make clean' 
######################################################################## 

.PHONY: extraclean 
extraclean: 

.PHONY: extrasqueakyclean 
extrasqueakyclean: 

# Include basic makefile 
include $(VRUI_MAKEDIR)/BasicMakefile 

######################################################################## 
######################################################################## 


$(EXEDIR)/NewPlanet: $(OBJDIR)/NewPlanet.o $(OBJDIR)/drawShape.o 
+1

可能是相對路徑嗎? 'Vrui :: openFile(...)'工作與相對路徑? – Beta

+0

恐怕不是 – TRod

+0

你在用什麼來建立你的項目? –

回答

0

如β-建議你應該使用相對路徑。將「數據」文件夾放在與您的可執行文件相同的文件夾中,並使用: Vrui::openFile("./data/land_shallow_topo_2048.png")

+0

我試過了,它didn沒有工作。 =( – TRod

+0

這可能是「不工作」,因爲你目前的directoyr不是你想象的那樣,嘗試添加一個'getcwd()'調用並打印結果 –

+0

我希望它從一個文件夾中讀取和我的.cpp文件一樣的地方如果我把文件的整個路徑(/ home/Desktop ...)起作用,但它只適用於我的電腦,而不適用於其他人的。 – TRod

0

文件打開應該與程序目錄相關,因此您可以在源目錄中爲圖片創建子目錄。確保讓用戶知道但是在哪裏放置這些照片,

[email protected]$ mkdir dat 
[email protected]$ mv pic.jpg dat/pic.jpg 

然後在來源:

::readImageFile("", Vrui::openFile("pic.jpg") 

將在C進行目錄:

include_directories ("${PROJECT_SOURCE_DIR/dat}") 

將在VS目錄:

here

(請確保您使用的是爲您的文件路徑提供的MSVS宏$(ProjectDir)$(SolutionDir)

+0

我將添加我的makefile代碼到這個問題,你讓我知道我在做什麼錯誤。我添加了你的建議到RESOURCEDIR =圖像 – TRod

+0

@TiagoRodrigues你需要用'-I'來預先設置你的路徑,例如'RESDIR = -I/home /圖片'並且像這樣調用這個var(例子):'gcc $(RESDIR)-Wall -blah main.cpp' –

相關問題