2010-01-30 3 views
17

일부 응용 프로그램 라이브러리에는 x86 및 x64 (예 : SQLite)에 차이가 있기 때문에 x86 및 x64 버전으로 만들고 싶습니다. 대상 운영 체제 "x64"로 릴리스 빌드에 대한 새로운 구성을 만들었습니다.Visual Studio : 구성을위한 다른 DLL

구성에 대해 서로 다른 DLL을 정의 할 수있는 방법이 있습니까? x86 릴리스에는 SQLite.dll을 사용하고 x64 릴리스에는 SQLite64.dll을 사용합니까?

  1. x64 호환 DLL이 아니기 때문에 불행히도 "모든 플랫폼"옵션을 사용할 수 없습니다.
  2. x64를 지원하고 x64 OS에서 32 비트 응용 프로그램을 실행하고 싶지 않습니다.
+0

이, 나는 우리가 특정 32 비트 및 64 비트 버전이 사용하는 하나의 제 3 자 .DLL와 유사한 문제를 좋은 질문이되어 대부분의 문제가되지 않습니다 동안 나의 그 코드는 관리되고 CLR을 대상으로합니다. 특정 대상에 대해 .dll의 올바른 버전을 얻는 것은 아직 해결되지 않은 문제입니다. – Murph

답변

11

프로젝트 파일의 dll 참조에 조건을 추가 할 수 있지만 Visual Studio를 사용하여 수행 할 수는 없습니다. 프로젝트 파일을 직접 편집해야합니다. 방법은 this을 참조하십시오.

32 비트 빌드 구성에만 32 비트 dll에 대한 참조와 64 비트 빌드 구성에 64 비트 dll에 대한 참조를 포함시켜야합니다.

+0

위 내용은 정확합니다. 프로젝트 파일을 수동으로 편집하고 조건 속성을 추가 할 수 있습니다. –

+0

와우, 내가이 질문에 대한 해답을 찾고 있다는 것을 알지 못했지만, 그 말은 흔들린다. 이 상황에서 디버그/릴리스와 독립적이므로 $ (Platform)에 있어야한다고 생각하는 것이 맞습니까? –

+0

@Peter : 네,'Condition = "$ (Platform) == 'x64'"'같은 것을 프로젝트 파일의 관련 노드에 추가해야합니다. – adrianbanks

0

VS 버전은 무엇입니까? 어떤 언어로 개발하고 있습니까? 네이티브 (= 관리되지 않음) C++의 경우 사용 된 라이브러리를 포함하여 모든 설정이 각 구성마다 다르게 설정 될 수 있습니다. 프로젝트 속성 대화 상자의 맨 위에서 수정할 구성의 설정 만 선택하면됩니다.

+0

vs 2008, C# .net 3.5 – Kai

1

프로젝트 파일에서 dll 참조의 조건이 필요합니다.
그러면 Visual Studio에서 활성 구성을 변경할 때마다 조건과 참조를 다시 확인하게됩니다.
각 구성에 조건을 추가하기 만하면됩니다.

예 :

<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> 
    <Reference Include="DLLName"> 
     <HintPath>..\DLLName.dll</HintPath> 
    </Reference> 
    <ProjectReference Include="..\MyOtherProject.vcxproj"> 
     <Project>{AAAAAA-000000-BBBB-CCCC-TTTTTTTTTT}</Project> 
     <Name>MyOtherProject</Name> 
    </ProjectReference> 
    </ItemGroup> 
관련 문제