2010-01-30 7 views
17

Je voudrais créer une version x86 et x64 de mon application car certaines bibliothèques que j'utilise ont des différences pour x86 et x64 (par exemple SQLite). J'ai fait une nouvelle configuration pour les versions de versions qui ont comme système d'exploitation cible "x64".Visual Studio: différentes DLL pour les configurations

Existe-t-il un moyen de définir différentes DLL pour la configuration, par ex. utiliser SQLite.dll pour la version x86 et SQLite64.dll pour la version x64?

  1. Malheureusement, je ne peux pas utiliser l'option "n'importe quelle plate-forme" qui est par défaut en raison de ces DLL non compatibles x64.
  2. Je veux prendre en charge le format x64 réel et ne pas exécuter une application 32 bits sur un système d'exploitation x64.
+0

Ceci est une bonne question, j'ai un problème similaire avec une .dll 3ème partie que nous utilisons qui a spécifique 32 et la version 64 bits de manière tout son pas un problème pour la plupart de ma code comme cela est géré et cible le CLR - obtenir la bonne version du fichier .dll pour des cibles spécifiques est un problème que je n'ai pas encore résolu – Murph

Répondre

11

Vous pouvez ajouter des conditions aux références dll dans le fichier de projet, mais vous ne pouvez pas le faire en utilisant Visual Studio - vous devrez modifier manuellement les fichiers de projet. Voir this pour savoir comment le faire. Ce que vous devez faire est d'inclure une référence à la DLL 32 bits uniquement dans la configuration de génération 32 bits et une référence à la DLL 64 bits dans la configuration de construction 64 bits.

+0

Ce qui précède est correct. Vous pouvez modifier manuellement le fichier projet et ajouter les attributs Condition. –

+0

Wow, ne savais même pas que je cherchais une réponse à cette question, mais ça bouge. Aurais-je raison de penser que dans cette circonstance, la condition devrait être sur $ (Platform), puisque cela est indépendant de debug/release? –

+0

@Peter: Oui, vous devez ajouter quelque chose comme 'Condition =" $ (Platform) == 'x64' "' au noeud concerné dans le fichier de projet. – adrianbanks

0

Quelle version VS? Dans quelle langue évoluez-vous? Si C++ natif (= non géré), pratiquement tous les paramètres, y compris les bibliothèques utilisées, peuvent être définis différemment pour chaque configuration. Dans la partie supérieure de la boîte de dialogue des propriétés du projet, choisissez simplement les paramètres de la configuration que vous souhaitez modifier.

+0

contre 2008, C# .net 3.5 – Kai

1

Vous avez besoin d'une condition pour la référence dll dans le fichier de projet.
Visual Studio vérifie à nouveau la condition et la référence chaque fois que vous modifiez la configuration active.
Ajoutez simplement une condition pour chaque configuration.

Exemple:

<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> 
Questions connexes