File 相对引用文件夹中的文件,而不是Haskell中的主级别
我已经建立了一个库,而且我还没有使用cabal,所以它只是main.hs source和其他东西旁边的一个文件夹。当我在其中一个文件夹中使用“Shaders/lt.frag”甚至“Shaders”“lt.frag”时,会出现openBinaryFile错误,因为顶层没有“Shaders/lt.frag”File 相对引用文件夹中的文件,而不是Haskell中的主级别,file,haskell,file-handling,File,Haskell,File Handling,我已经建立了一个库,而且我还没有使用cabal,所以它只是main.hs source和其他东西旁边的一个文件夹。当我在其中一个文件夹中使用“Shaders/lt.frag”甚至“Shaders”“lt.frag”时,会出现openBinaryFile错误,因为顶层没有“Shaders/lt.frag” 因此,我们来看看“/Shaders/lt.frag”,而不是“/Graphics/Lib/Rendering/Shaders/lt.frag”。有办法解决吗?引用该文件的文件位于“/Graphi
因此,我们来看看“/Shaders/lt.frag”,而不是“/Graphics/Lib/Rendering/Shaders/lt.frag”。有办法解决吗?引用该文件的文件位于“/Graphics/Lib/Rendering”中,因此它应该与该文件相对。如果从Haskell程序中打开文件,则操作系统查找该文件的位置取决于该程序的工作目录。通常,程序的工作目录是调用可执行文件的目录,或者是执行GHCi的目录 工作目录与单个Haskell源文件所在的目录完全无关
Cabal确实允许您在运行程序时将程序数据文件放置到特定位置并访问该数据目录。如果您从Haskell程序中打开文件,则操作系统查找文件的位置取决于程序的工作目录。通常,程序的工作目录是调用可执行文件的目录,或者是执行GHCi的目录 工作目录与单个Haskell源文件所在的目录完全无关
Cabal确实允许您将程序数据文件放置到特定位置,并在运行程序时访问该数据目录。这与OpenGL有何关系?是的,您正在处理着色器源文件,但这最终只是一个Haskell I/O方法问题。删除opengl标签,因为它与这个问题无关。啊,对不起。我认为这可能是我如何加载特定着色器的问题。但你是对的,它最终只是从文本文件中读取内容。对不起!这与OpenGL有什么关系?是的,您正在处理着色器源文件,但这最终只是一个Haskell I/O方法问题。删除opengl标签,因为它与这个问题无关。啊,对不起。我认为这可能是我如何加载特定着色器的问题。但你是对的,它最终只是从文本文件中读取内容。对不起!如果我使用阴谋集团,包裹里的文件也会这样吗?所以,如果我对我的代码进行密谋,它还会看到我的可执行文件在哪里吗?我没有访问库外的目录。它看不到可执行文件的位置。程序的起始工作目录是从中调用可执行文件的目录。您可以使用
System.directory.getCurrentDirectory
获取当前工作目录。您可以使用System.Directory.setCurrentDirectory
更改它。因此,如果我要尝试使用文件夹中的文件,我必须使用setCurrentDirectory?你介意给我一个MWE吗?我不太确定我是否明白。我还没有找到答案。我现在有一个阴谋集团库,可以读取一个文件,但它需要在工作目录中,等等。当我读取我的文件时,我会做什么,所以它看起来相对于库文件?Boop,明白了!谢谢如果我使用阴谋集团,包裹里的文件也会这样吗?所以,如果我对我的代码进行密谋,它还会看到我的可执行文件在哪里吗?我没有访问库外的目录。它看不到可执行文件的位置。程序的起始工作目录是从中调用可执行文件的目录。您可以使用System.directory.getCurrentDirectory
获取当前工作目录。您可以使用System.Directory.setCurrentDirectory
更改它。因此,如果我要尝试使用文件夹中的文件,我必须使用setCurrentDirectory?你介意给我一个MWE吗?我不太确定我是否明白。我还没有找到答案。我现在有一个阴谋集团库,可以读取一个文件,但它需要在工作目录中,等等。当我读取我的文件时,我会做什么,所以它看起来相对于库文件?Boop,明白了!谢谢