2010-04-13 2 views
0

DLL을 통해 SQLITE를 사용하는 여러 Windows C++ 프로그램이 있습니다. visual-studio 프로젝트 속성은 sqlite3.lib를 참조합니다. 그들은 OK를 빌드하고 실행합니다.Visual Studio 2008 C++이 SQLITE DLL에서 종속성을 감지하지 못함

그러나 설치 프로그램을 만들면 SQLite3.DLL에 대한 종속성이 안정적으로 감지되지 않고 DLL이 포함되지 않고 클라이언트가 "DLL 지옥"으로 떨어집니다.

매번 설치 프로그램이 DLL을 포함했는지 수동으로 확인해야합니다. 그렇지 않다면 수동으로 "파일 시스템 편집기"를 사용하여 DLL을 추가해야합니다. 내가 그렇게하고 설치 프로그램을 다시 빌드하도록 요청하면 Visual Studio에서 갑자기 DLL을 감지하고 다른 DLL 사본을 추가 한 다음 두 개의 사본이 있다고 불평합니다. 그래서 빌드를 중단하고 여분의 복사본을 수동으로 제거한 다음 다시 빌드를 시작해야합니다.

여기에 두 장의 사본이 표시된 스크린 샷이 있습니다.

alt text http://66.199.140.183/vs2008.jpg

이는 경향이 매우 실망 오류입니다!

Visual Studio에서 수동 개입없이 매번 정확하게 하나의 DLL 사본을 포함하도록 강제 할 수있는 방법이 있습니까?

답변

0

"제외"의 종속성 속성이 "거짓"으로 설정되고 "중요도"가 "참"으로 설정되어 있습니까? (또는 더 극단적으로 "조건"을 "참"으로 설정하여이 구성 요소를 항상 설치하게 할 수도 있습니다.)

+0

솔루션을 사용하면 빌드를 시작하기 전에 수동으로 DLL을 추가해야한다고 생각합니다. 의존성 탐지. VS2008이 DLL의 두 번째 복사본을 추가 한 다음 두 개의 복사본이 있다는 사실에 대해 불평한다는 점을 제외하면 이는 정상입니다. – ravenspoint

+0

설치 프로젝트 섹션 아래에 나타나는 "탐지 된 종속성"절을 참조했습니다. 설치 프로젝트를 사용하고 있지 않다면 프로젝트 속성 인 경우 "참조"로 설정 한 SQLite3이있는 경우 프로젝트 속성의 "참조"탭에서 해당 속성을 강조 표시 한 다음 변경하십시오 "로컬 복사"속성을 "True"로 설정합니다. – ewall