2012-02-12 2 views
1

저는 VS2010을 사용하는 C++의 게임 엔진 프로젝트를 진행하고 있습니다. 우리는 하나의 메인 프로젝트 인 OgreProject를 가지고 있습니다. OgreProject는 렌더링을위한 Ogre3D를 포함합니다. 그런 다음 AudioLibrary라는 클래스 라이브러리 프로젝트가 있습니다. AudioLibrary는 fmod를 사용하며 적절한 헤더와 libs를 포함합니다. 문제는 OgreProject의 클래스가 AudioLibrary의 SoundPlayer.h를 사용하려고 할 때 발생합니다. 그렇다면, OgreProject는 #include가 어디인지를 알지 못합니다. OgreProject가 fmod가 어디에 있는지는이 헤더를 직접 사용하지 않기 때문에 잘못된 것이라고 느낍니다. OgreProject를 사용하지 않고 OgreProject에서 AudioLibrary의 헤더 파일을 사용하는 올바른 방법은 무엇입니까?Visual Studio 2010 : 여러 C++ 프로젝트 작업

답변

1

올바른 방법은 없습니다. 한 도서관이 다른 도서관에 대해 알 수있는 불가사의 한 방법은 없습니다. 당신은 그렇게하도록 구성해야합니다. 같은 솔루션에두면 다른 프로젝트에 하나의 프로젝트를 프로젝트 참조로 추가 할 수 있습니다.

+0

슬프게도 제 질문에서 마지막 단어가 사라진 것처럼 보입니다. OgreProject에서 Fmod를 알지 못하면서 OgreProject에서 AudioLibrary의 헤더 파일을 사용하는 올바른 방법은 무엇입니까?를 읽어야합니다. – user1205407

+0

그리고 지금, AudioLibrary와 Ogreproject에서 fmod에 "additional headers"를 포함하고 있습니다. Ogreproject는 Audiolibrary를 참조합니다. Ogreproject에서 직접 fmod를 사용하지 않을 때 두 프로젝트에서 프로젝트 속성을 복제 할 필요가 없다고 생각됩니다. 아마도 그것은 제가 현대 언어에 익숙해 진 것 같습니다. 어쨌든, 당신의 대답에 감사드립니다. – user1205407

0

Pimpl 관용어 (또는 패턴)를 사용해보십시오.

프로젝트의 헤더 파일에서 fmod과 관련된 모든 것을 제거 할 수 있습니다. 구현 파일에만 클라이언트 프로젝트가 아닌 fmod 헤더가 필요합니다.

이점을 설명하는 this answer을 참조하십시오.

0

프로젝트의 모든 구성 요소에 대해 계층 구조를 정의하고 다른 구성 요소가 미리 정의 된 위치에서 사용할 특정 구성 요소의 모든 헤더 파일을 유지해야합니다. 다른 구성 요소는 항상이 위치를 볼 수 있습니다. 이러한 종속성을 명시 적으로 찾아야 할 구성 요소를 말하면 아무런 문제가 없습니다.

관련 문제