2012-06-04 57 views
0

我有2個我已經做過的Qt項目。一個構建一個庫,另一個構建使用該庫的GUI。我在圖書館的項目包括我製作的一堆着色器。在我的GUI中,我想引用這些着色器的路徑。我的方法是在我的庫中有一個名爲getLibraryPath()的靜態函數,它返回QString將我的文件系統上的路徑引用到庫。獲取外部庫中的文件路徑

我試過使用QDir::currentPath()QApplication::applicationFilePath()和其他類似的函數返回路徑,但它們都返回引用我的GUI路徑的路徑,而不是庫的路徑,即使獲取路徑的函數位於庫中。

在我的GUI我嘗試做參考的着色器:Shader->addShaderFromSourceFile(QGLShader::Vertex, MyExternalLib::getLibraryPath() + "/shaders/MyVertexShader.vs");

回答

1

庫只是一串代碼。它沒有走自己的道路的概念。做你打算什麼的正常途徑是:

  1. 如果磁帶庫是一個單獨安裝的產品 - 設置安裝一個註冊表項,並在運行時檢查。這將是特定於平臺的,除非庫是用Qt編寫的 - 那麼你可以使用QSettings,但要確保你正確設置你的公司名稱,應用程序等,因爲它不再由QApplication完成。

  2. 如果該庫作爲應用程序的一部分安裝在相同的文件夾樹中:請使用QCoreApplication::applicationDirPath(),並在應用程序可執行文件和所需文件之間添加相對路徑。

0

我能夠通過添加我想要引用到我的庫項目中的qrc文件的文件來解決此問題。通過這樣做,我可以輕鬆地引用qrc路徑及其中的文件。