0

我已经制作了 2 个 Qt 项目。一个构建一个库,另一个构建一个使用该库的 GUI。我的图书馆项目包括我制作的一堆着色器。在我的 GUI 中,我想引用这些着色器的路径。我的方法是在我的库中调用一个静态函数,该函数getLibraryPath()QString我的文件系统上的路径引用到库中。

我尝试过使用QDir::currentPath()QApplication::applicationFilePath()其他类似的返回路径的函数,但它们都返回引用我的 GUI 路径的路径,而不是库的路径,即使获取路径的函数位于库内。

在我的 GUI 中,我尝试通过执行以下操作来引用着色器:Shader->addShaderFromSourceFile(QGLShader::Vertex, MyExternalLib::getLibraryPath() + "/shaders/MyVertexShader.vs");

4

2 回答 2

1

库只是一堆代码。它没有拥有自己道路的概念。做你想做的事情的正常方法是:

  1. 如果库是单独安装的产品——在安装程序中设置一个注册表项,并在运行时检查它。这将是特定于平台的,除非库是用 Qt 编写的——然后您可以使用 QSettings,但请确保您正确设置公司名称、应用程序等,因为 QApplication 不再为您完成。

  2. 如果该库作为应用程序的一部分安装,请在同一文件夹树中:使用QCoreApplication::applicationDirPath()并将应用程序可执行文件与您想要的文件之间的相对路径添加到此路径。

于 2012-06-04T14:32:55.823 回答
0

我能够通过将我想要引用的文件添加到我的库项目中的 qrc 文件来解决这个问题。通过这样做,我可以轻松地引用 qrc 路径和其中的文件。

于 2012-06-06T12:51:25.137 回答