2010-07-14 4 views
2

J'ai compilé une DLL sur Windows Server 2008 édition 64 bits. Cela fonctionne bien sur cette version de Windows, mais si je passe à Windows 7 ou XP 64 bits, la dll ne fonctionne pas. Comment puis-je rendre la dll compatible avec les trois versions de Windows 64 bits?Comment rendre la DLL 64 bits compatible avec les éditions 64 bits de Windows Server 2008, Windows 7 et Windows XP?

J'utilise Visual Studio 2010.

+3

Vous avez probablement une dépendance sur une DLL ou autre chose similaire. Essayez Process Monitor pour voir ce qui échoue. – sharptooth

+1

Il fait, la version DLL de la CRT sans aucun doute. –

Répondre

3

Vous pouvez utiliser un programme appelé Dependency Walker pour voir quelles dépendances votre fichier .dll a, et d'éliminer ceux qui sont différentes entre les versions de Windows.

+0

J'ai essayé que vous pouvez me guider où placer les dlls dans le soit dans le c: \ windows \ wow64system ou le dossier racine où la DLL est placée –

2

Vérifiez comment les macros _WIN32_WINNT et WINVER ont été définies dans votre DLL. Pour rendre votre DLL compatible avec Windows XP, vous devez les définir comme 0x0501. Cela vous permet de trouver tous les problèmes de dépendance au moment de la compilation. Plus d'informations sur ces macros vous pouvez trouver here.

+0

bien dans les paramètres de l'éditeur de liens sous les paramètres du projet, il est défini comme WIN32; NDEBUG; _WINDOWS; _USRDLL; ADHANDLLERDLL_EXPORTS et aussi j'utilise les macros SECURITY_WIN32 et WIN32_DCOM aucun _WIN32_WINNT et WINVER sont définis dans je pense. Y at-il n'importe quel ay pour faire la DLL dépend-moins de d'autres dll d'os? –

+0

Vérifiez 'stdafx.h', il pourrait encore y être défini. Si '_WIN32_WINNT' n'a pas été défini explicitement, il sera défini par le compilateur à la valeur la plus élevée possible pour le système d'exploitation où vous compilez votre DLL. –

Questions connexes