2010-04-28 35 views
3

J'essaye de relier mon projet avec fftw et jusqu'ici, je l'ai eu pour compiler, mais pas le lien. Comme le dit le site, j'ai généré tous les fichiers .lib (même si je n'utilise que la double précision), et les ai copiés à C:\Program Files\Microsoft Visual Studio 9.0\VC\lib, le fichier .h à C:\Program Files\Microsoft Visual Studio 9.0\VC\include et le .dll à C:\windows\system32.fftw dans Visual Studio?

J'ai copié le programme tutoriel, et l'erreur exacte que je reçois est:

1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_free referenced in function "bool __cdecl test(void)" ([email protected]@YA_NXZ) 
1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_destroy_plan referenced in function "bool __cdecl test(void)" ([email protected]@YA_NXZ) 
1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_execute referenced in function "bool __cdecl test(void)" ([email protected]@YA_NXZ) 
1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_plan_dft_1d referenced in function "bool __cdecl test(void)" ([email protected]@YA_NXZ) 
1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_malloc referenced in function "bool __cdecl test(void)" ([email protected]@YA_NXZ) 

Donc, ce qui pourrait être mal avec la configuration de mon projet? Merci!

Répondre

2

Avez-vous réellement lié à la bibliothèque dans le projet que vous construisez?

Project -> Properties -> Linker -> Input -> Additional dependencies 

Vous devez ajouter le nom de fichier de la bibliothèque à ce champ.

+0

Merci! Je m'attendais à ce que ce soit quelque chose de simple comme ça. –

0

En supposant que vous avez réellement lié votre projet contre la lib et il ne fonctionne pas, utilisez /verbose:lib et coller la sortie de ce et la sortie de

dumpbin /exports fftw.lib | findstr fftw_free 
3

Mon cas

En utilisant FFTW dans Visual Studio 2010

FFTW précompilé 3.3.1 Les DLL Windows s'installent à l'aide de fftw-3.2.1-dll.zip, sur mon ordinateur Windows XP.

  1. Ouvrir la fenêtre cmd et allez à lib.exe dossier C:\Program Files\Microsoft Visual Studio 10.0\VC\bin>
  2. Type de lib /def:libfftw3-3.def
  3. Type de lib /def:libfftw3f-3.def
  4. Type de lib /def:libfftw3l-3.def
  5. Si vous avez une erreur sur commande, copiez tous les fichiers mspdb80.dll ou mspdb100.dll dans bin annuaire.
  6. Vous obtiendrez 6 fichiers

    libfftw3-3.exp, libfftw3-3.lib, libfftw3f-3.exp, libfftw3f-3.lib, libfftw3l-3.exp et libfftw3l-3. lib

    et de le copier dans le répertoire de programmation.

  7. Supprimez tous les fichiers mspdb80.dll ou mspdb100.dll du répertoire bin.

  8. Fermez le projet et rouvrez-le et reconstruisez-le à nouveau.

0

J'ai rencontré un problème similaire. Ce qui a aidé à compiler les bibliothèques fftw avec cette aide Compiling FFTW source in Visual studio. En fait, de plus près, le problème était de compiler mon application Win 32 et d'essayer d'utiliser les bibliothèques x64. Alors assurez-vous que la plate-forme est la même.

+0

J'ai utilisé les binaires Windows fftw ** pré-construits pour 32bit ** sans les construire moi-même et cela a fonctionné.Ce qui m'a aidé, c'est que je construisais mon application en mode 32 bits et en utilisant 64bit fftw. J'ajouterai également que j'utilise un Windows 64 bits et que copier les DLL fftw sur 'C: \ Windows \ System32' ne fonctionnait pas (c'est-à-dire que mon application ne les trouvait pas). J'ai dû les copier 'C: \ Windows \ SysWOW64' pour une raison quelconque. –