Kann Datei it relativem Pfad nicht laden
-
Hallo zusammen,
ich bin grade ein bisschen verwirrt. Ein fast fertiges Programm mit MFC in Visual Studio 2008 geschrieben möchte ich ordnen. Das heißt, ich möchte verschiedene Dateien die eingebunden werden in Unterordner packen und von dort aufrufen. Das habe ich folgendermaßen versucht.
CvMat *intrinsic = (CvMat*)cvLoad( "calib//Intrinsics.xml" );
Den Ordner "calib" habe ich im Debugordner erstellt, die Dateien werden aber nicht geladen.
Was noch komisch ist, ist das ich Bilder mit dem oberen Syntax einbinden konnte. Der einzige Unterschied ist die Stelle im Code der beiden Anweisungen.
Die Bilder werden in einer Headerdatei eingebunden, die in der Dialog .cpp eingebunden wird und die Intrinsics.xml wird in einer Klasse geladen.
Hat jemand ne Idee woran das liegen könnte?Danke schon mal...
-
Kaiaiai schrieb:
Den Ordner "calib" habe ich im Debugordner erstellt, die Dateien werden aber nicht geladen.
Du kannst bei den Debugging Einstellungen ein Ausführungsverzeichnis angeben. Ich glaube das Projektverzeichnis ist default (und nicht das Ausgabeverzeichnis).
Wenn du es ganz sicher machen willst nutze GetModuleFileName um das Verzeichnis der Anwendung zu bekommen (das Ausführungsverzeichnis muss auch später nicht zwingend das Verzeichnis deiner exe sein).
-
Ich habe gerade mal das Arbeitsverzeichnis gecheckt in dem er sich befindet, bevor er die Dateien laden soll.
Es ist nicht das Debugverzeichnis, sondern das Verzeichnis, aus dem mein OpenFileDialog eine Datei gewählt hat. Ich dachte eigentlich, dass das Arbeitsverzeichnis immer das gleiche bleibt.
Kann man verhindern, dass das Arbeitsverzeichnis verändert wird?
Oder muss ich nach dem OpenFileDialog das Verzeichnis zurücksetzen?In den Debuggingeinstellungen habe ich kein Ausführungsverzeichnis gefunden, nur Ausgabeverzeichnis und Zwischenverzeichnis.
-
Siehe OFN_NOCHANGEDIR
Ansonsten mein Rat: Vergiss das Arbeitsverzeichnis und verwende immer absolute Pfade...
-
Danke, das hat geklappt. Absolute Pfade würden bei mir nicht funktionieren, da ich keine Installationroutine habe, die alles einrichtet.