2012-06-04 2 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 경로와 그 내부의 파일을 쉽게 참조 할 수 있습니다.

관련 문제