2011-04-22 2 views
5

Je viens de Xcode, en essayant de compiler un projet dans Visual Studio 2010, et je reçois les erreurs suivantes:symboles externes non résolues dans Visual Studio 2010

2>ofxCLeye.obj : error LNK2019: unresolved external symbol "struct _GUID __cdecl CLEyeGetCameraUUID(int)" ([email protected]@[email protected]@[email protected]) referenced in function "public: static int __cdecl ofxCLeye::listDevices(void)" ([email protected]@@SAHXZ) 
2>ofxCLeye.obj : error LNK2019: unresolved external symbol "int __cdecl CLEyeGetCameraCount(void)" (?CLEyeGetCameraC[email protected]@YAHXZ) referenced in function "public: static int __cdecl ofxCLeye::listDevices(void)" ([email protected]@@SAHXZ) 
2>ofxCLeye.obj : error LNK2019: unresolved external symbol "bool __cdecl CLEyeCameraGetFrameDimensions(void *,int &,int &)" ([email protected]@[email protected]) referenced in function "public: void __thiscall ofxCLeye::grabFrame(void)" ([email protected]@@QAEXXZ) 
2>ofxCLeye.obj : error LNK2019: unresolved external symbol "bool __cdecl CLEyeCameraGetFrame(void *,unsigned char *,int)" ([email protected]@[email protected]) referenced in function "public: void __thiscall ofxCLeye::grabFrame(void)" ([email protected]@@QAEXXZ) 
2>ofxCLeye.obj : error LNK2019: unresolved external symbol "bool __cdecl CLEyeDestroyCamera(void *)" ([email protected]@[email protected]) referenced in function "public: virtual void __thiscall ofxCLeye::close(void)" ([email protected]@@UAEXXZ) 
2>ofxCLeye.obj : error LNK2019: unresolved external symbol "bool __cdecl CLEyeCameraStop(void *)" ([email protected]@[email protected]) referenced in function "public: virtual void __thiscall ofxCLeye::close(void)" ([email protected]@@UAEXXZ) 
... etc etc... 
2>bin\clEye_debug.exe : fatal error LNK1120: 10 unresolved externals 

Je suppose que le compilateur essaie de lier CLEyeMulticam.lib mais ne le trouve pas. Je pense que je l'ai configuré correctement.

Pourriez-vous me montrer les étapes nécessaires pour inclure une bibliothèque dans VS2010?

Merci,

marc

+0

Est-ce que 'CLEyeMulticam.lib' est un fichier que vous avez traîné ou devrait avoir été construit par VS2010? – quamrana

Répondre

10

Excuses si c'est trop pédant. Si cela est une bibliothèque pré-construit (non construit dans le cadre du projet/solution) alors assurez-vous

a) #include the correct header 
b) #define any requisite macros 
c) speciy additional .lib dependencies as shown below. 

enter image description here

Vous devez spécifier un chemin complet qualifé (d: \ src \ project \ libs \ camera.lib) sauf si le fichier libary est dans la variable d'environnement LIB.

+0

+1: mais le chemin n'a pas besoin d'être complet si vous ajoutez votre répertoire libs à Additional Include Directories, ajoutez le chemin avec des feuilles de propriétés, ajoutez un chemin avec la variable d'environnement ou utilisez des chemins relatifs du répertoire du projet. – AJG85

+0

Exactement ce que j'ai fait, mais je reçois toujours les erreurs. Quelque chose d'autre doit être faux. Merci quand même – Marc

+1

Marc, est-ce que la bibliothèque exporte une interface C ou C++? Si vous essayez de lier une bibliothèque 'C' (ce que je suppose être le cas à partir des noms d'API) avec du code C++, alors la recherche de nom provoque les erreurs de lien. Dans le fichier d'en-tête de la bibliothèque, vérifiez que toutes les fonctions de la bibliothèque sont incluses dans un bloc externe "C" {}. –

2

Dans les pages de propriété pour votre projet, accédez à Configuration> Linker> Entrée et ajouter le fichier lib au réglage Dépendances supplémentaires. Ceci s'applique à VC++ 2008, probablement aussi à 2010.