2009-07-21 8 views
0

Probablement une question stupide: J'ai un bureau WinXP 32bits que j'utilise pour compiler une DLL (32 bits) avec Visual Studio 2005/Intel COmpiler 10.1. Je voudrais générer une version 64 bits de ma DLL. Comment faire ça? Les réponses concernant Visual Studio sont intéressantes, mais celles qui concernent le compilateur Intel obtiennent des points supplémentaires.Comment compiler une version 64 bits de ma DLL?

Merci d'avance.

ALex

+0

Dans quelle langue écrivez-vous? –

Répondre

1

Ce petit guide que je fait est de faire t il VC++ 2005 Express compilation 64 bits en utilisant la dernière PSDK (barbante Je ne sais pas comment il fonctionne bien)

Je suppose vous avez déjà VC++ 2005 Express et le PSDK installé, et activé l'application Win32 en VC++ et en exécutant Windows 64 bits (eh bien cela fonctionne peut-être aussi dans Windows 32 bits mais l'exe ne fonctionnera pas dans cet environnement)

1) Démarrer - > Tous les programmes -> Microsoft Platform SDK pour Windows Server 2003 SP1 -> Windows XP 64 bits Environnement de construction -> Définir Windows XP x64 Build Environnement (Déboguer/Vente au détail) < - ne sait pas lequel en ce moment

2) démarrer le IDE VC++ 2005 Express exécuter le VCExpress.exe fichier avec le fichier/USEENV swich: [votre répertoire d'installation de VC++ 2005 Express] \ Common7 \ IDE \ VCExpress.exe/USEENV Ceci effacera tous les chemins par défaut de bin/lib/include et ajoutera seulement ceux que le 'Set Windows XP x64 Build Environnement (Debug/Retail) 'lot de fichiers de lot pour vous.

3) Ouvrez votre application ou créez-en une nouvelle.

4) Modifiez les propriétés de l'application (Projet -> Propriétés) et modifiez ces paramètres selon ces valeurs.

C/C++ -> Général -> Informations de débogage Format: Base de données de programme (/ Zi) C/C++ -> Génération de code -> Contrôles de base d'exécution: Par défaut Linker -> Avancé -> Machine cible: Non définie linker -> ligne de commande -> options supplémentaires:/MACHINE: AMD64

maintenant il devrait être en mesure de compiler pour 64bit (je pense que je havn't oublié quoi que ce soit)

barbante Je suis arrivé cette erreur: erreur PRJ0002 : Le résultat d'erreur 128 est retourné à partir de 'SDK \ Bin \ mt.exe C: \ Program Files \ Microsoft Platform'.

mais de le résoudre en copiant le mt.exe fourni avec l'installation de VC++ 2005 Express dans le répertoire PSDK/Bin, écrasant ainsi le fichier PSDK/bin/mt.exe.

Une autre chose que j'ai presque oublié. vous pouvez obtenir cette erreur décrite ici: http://support.microsoft.com/?id=894573 en ajoutant bufferoverflowU.lib au projet va résoudre cela.

REMARQUE: Je n'ai encore rien testé juste compilé une simple application Windows et une application de console et le TaskManager ne dit pas * 32 après le processus comme il le ferait s'il était 32 bits. Je ne sais pas si cela fonctionne avec des projets plus importants ou quoi que ce soit parce que je l'ai fonctionné il y a 10 minutes :)

Mais j'ai une question à propos de mes nouvelles applications 64 bits (juste une simple fenêtre "hello world" créée par le construit dans l'assistant) comment puis-je être sûr que c'est vraiment 64 bits? le gestionnaire de tâches dit que c'est parce qu'il n'a pas le * 32 mais est-ce une preuve suffisante?

EDIT: vous devrez peut-être copier le msvcrtd.dll & MSVCP60D.DLL de PSDK \ NoRedist \ Win64 \ AMD \ là où ils appartiennent (ne savent pas vraiment) Je les ai mis dans Windows \ System32

informations extrais http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/d0770dde-56e5-4a28-acb0-30908c0f7ebd Lire ce aussi:

http://www.codeproject.com/KB/system/64BitOSAndPortingIssues.aspx

-1

Sélectionnez propeties sur votre projet explorateur de solutions i. Sous Build - Platform, choisissez "Any CPU".

+0

J'allais le dire, mais j'ai ensuite remarqué que les projets C++ avaient une page de propriétés différente, et Build n'est pas là. – Powerlord

+0

Au moins, il n'était pas dans les paramètres du projet MFC. Je n'ai pas vérifié les autres. – Powerlord

+0

Merci pour votre avis, cette réponse devrait être supprimée si elle est inutile? – dbd

0

vous pouvez compiler directement dans VS2005 ou 2008 en raison de l'attribut « tout CPU » mais annuler l'attribut « com vu » si vous avez peut-être vous devez copier à SYSTEM32 au lieu de 64, puis RegAsm il

Questions connexes