Symboles externes non résolus dans la compilation de l'application 32 bits sous Windows 64
Donc je suis en train de compiler l'application héritée de 32 bits à 64 bits..
Je re-compilé toutes les libs et ont fait paraître en GAGNER SDK6.0 64 bit pour les libs..
Je suis en utilisant:
- Visual Studio Professional Edition 2008
- Visual C++
- dotNet Framework 3.5 SP1
- Windows Server 2008R2
- Windows SDK 6.0 est Un
Tout est enfin en train de se lever, mais je suis arriver à ces étranges symbole non défini erreur:
error LNK2019: unresolved external symbol InterlockedDecrement referenced in function ...
error LNK2019: unresolved external symbol InterlockedIncrement referenced in function ...
error LNK2019: unresolved external symbol GetModuleBaseName referenced in ...
error LNK2019: unresolved external symbol EnumProcessModules referenced in ...
error LNK2019: unresolved external symbol EnumProcesses referenced in ...
error LNK2019: unresolved external symbol GetProcessMemoryInfo referenced
Le problème est que ce sont tous les trucs à gagner de SDK.
InterlockedDec et InterlockedInc sont à venir à partir de kernel32.lib
GetModuleBaseName, EnumProcessModules, EnumProcesses,GetProcessMemoryInfo sont en psapi.h mais aussi kernel32.lib ou psapi.lib
J'ai vérifié C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\x64 et les deux libs
kernel32.lib et psapi.lib sont là.
Il a certainement regarde les libs au bon endroit. J'ai allumé /VERBOSE:LIB
et il pointe vers le bon dossier.
Donc, je suis vraiment confus pourquoi n'est-il pas d'en trouver un.
Des idées???
Grâce
source d'informationauteur grobartn | 2010-06-30
Vous devez vous connecter pour publier un commentaire.
Donc j'ai finalement pensé à elle, un peu...
Il n'était pas de trouver psapi.lib
Dans Project->Linker->dépendances Supplémentaires au lieu de dire psapi.lib
J'ai donné le chemin d'accès complet et il a travaillé...
pas vraiment sûr de savoir pourquoi il a échoué à le trouver avant mais bon...
C'est très long shot (et je ne crois pas vraiment ce que c'est), mais peut-être que les en-têtes ne sont pas protégés correctement avec extern "C" pour la compilation c++? Êtes-vous compris le système des en-têtes ou tout simplement de déclarer les fonctions vous-même?
Vous pouvez poster votre compiler et lier des lignes de commande, et #def qui est dans votre code?
Est-ce possible si vous faites un simple projet à partir de zéro que seuls les appels de l'une de ces méthodes?
Pour l'enregistrement: Même problème, la solution;
J'ai eu une entrée du répertoire
ajouté dans la liste des
Ce qui a entraîné l'utilisation de l'ancien VS2005 kit de développement platform sdk psapi.lib (il n'avait que x86, pas de version 64 bits).
Après la suppression de l'entrée de la bonne lib de l'installation de WinSDK x64/psapi.lib est utilisé maintenant.
Afin de garder un œil pour mixages/commande de la vieille & nouveau Sdk!
Évidemment, le chemin d'accès complet fonctionne également, mais peut-être un problème lorsque vous utilisez le projet sur plusieurs machines.
Dans mon cas(à migrer à partir de VS2008 pour VS2012), problème résolu, après l'ajout de psapi.lib dans de l'éditeur de liens->input->Dépendances Supplémentaires VS 2012.