0

私が作成した 2 つの Qt プロジェクトがあります。1 つはライブラリを構築し、もう 1 つはそのライブラリを使用する 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 に答える