IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

VC++ .NET Discussion :

Probl�me de link de LAPACK et BLAS


Sujet :

VC++ .NET

  1. #1
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    F�vrier 2011
    Messages
    17
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Chercheur en informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 17
    Par d�faut Probl�me de link de LAPACK et BLAS
    Bonjour � tous,

    Je poss�de un projet utilisant BLAS et LAPACK qui compile parfaitement sous Visual 2000, mais � l'heure de le compiler avec Visual 2010, un probl�me de link apparait. Par d�sespoir, je me suis finalement rabattu sur un exemple simple utilisant BLAS et LAPACK qui pr�sente toujours la m�me erreur.

    J'ai repris l'exemple qui est d�crit ici :
    Using LAPACK subroutines in a Visual Studio C/C++ Project without a FORTRAN compiler
    Download the LAPACK precompiled binaries for MinGW. You should have a two files: liblapack.lib and liblapack.dll (libblas.lib libblas.dll if you also want the Reference BLAS) .
    OPTIONAL: Obtain a tuned version of BLAS for your machine (refer to "Compiling GotoBLAS").
    Create a Visual Studio project with the following sample C program:
    For C++ program, rename the prototypes in the above program to
    void dgesv_( )
    void dgels_( )
    to
    extern "C" void dgesv_( )
    extern "C" void dgels_( )
    Add the the BLAS and LAPACK libraries to the Visual Studio project settings,
    under Linker -> General -> Additional Library Directories: the directory where your liblapack.lib is.
    under Linker -> Input -> Additional Dependencies: libblas.lib;liblapack.lib (For example, on my machine, I am using the Reference BLAS)
    Note: because BLAS libraries commonly provide faster versions of some LAPACK subroutines, the BLAS library must be listed before before LAPACK library.
    Note: make sure that all the dll (BLAS, LAPACK, MinGW dlls) are on your system path or copy them in the WINDOWS\system32 folder, else binary won't run.
    Compile the project and run the resulting executable. You should get the output: The solution is -0.661082 9.456125 -16.014625
    Cet exemple semble correct, mais �a ne fonctionne pourtant pas. J'obtiens le message suivant � la compilation, qui correspond parfaitement au message d'erreur de mon projet :
    1> test.cpp
    1>test.obj : error LNK2001: unresolved external symbol _dgesv
    1>C:\Users\sainvitu\Documents\Visual Studio 2010\Projects\test\Release\test.exe : fatal error LNK1120: 1 unresolved externals
    ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
    Mes librairies BLAS.lib et LAPACK.lib semblent correctement link�es et existent, car lorsque je change le nom de la librairie dans les options de link j'obtiens un message totalement diff�rent sp�cifiant bien qu'il n'a pas pu trouver la librairie.
    Je pense que le probl�me vient d'un ajout d'un underscore ( _ ) devant le nom de la fonction, et, �tant tr�s peu exp�riment� avec Visual C++, je n'ai aucune id�e de comment param�trer cela.

    Par ailleurs, je ne comprends pas tr�s bien ce que vient faire Mingw ici ni comment l'utiliser. Est-il important pour la bonne compilation du projet ou n'est-ce qu'un contexte sans importance ?

    Si quelqu'un sait comment me sortir de ce p�trin, ce serait vraiment tr�s appr�ci�.
    Merci d'avance,
    Caduchon.

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 508
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 508
    Par d�faut
    Le contenu de votre citation fait plus penser � du bricolage cas une conception soign�e.

    On ne va pas se mettre � chasser le dahu ni � mettre des ronds dans des carr�s.

    Tr�ve de m�taphore, utilisez les outils type DUMPBIN fourni avec VS sur vos lib.
    Cela donnera le v�ritable nom d�cor� export� par la lib.

    Pour une vue succincte des conventions de nommage C et Fortran :
    http://msdn.microsoft.com/en-us/libr...(v=vs.60).aspx

    Cela permettra de savoir quel convention de nommage doit �tre appliqu� et quelles modifications doivent �tre appliqu�es dans les fichiers d'en-t�te (si le mode bricolage est la norme ), ou dans la configuration du projet VS si les impl�menteurs ont fait correctement leur boulot pour l'interop�rabilit�?

    Donc, c'est quoi le r�sultat de l'affichage des symboles de votre lib avec DUMPBIN ou consort ?

Discussions similaires

  1. [DLL/classe template] probl�me de link
    Par Bob.Killer dans le forum C++
    R�ponses: 7
    Dernier message: 31/08/2005, 18h56
  2. Probl�me de link...
    Par Royd938 dans le forum MS SQL Server
    R�ponses: 4
    Dernier message: 30/09/2004, 17h33
  3. C/asm : probl�me pour link
    Par SteelBox dans le forum Autres �diteurs
    R�ponses: 3
    Dernier message: 06/04/2004, 23h03
  4. Probl�me de LINK Bizarre !!
    Par Jasmine dans le forum MFC
    R�ponses: 24
    Dernier message: 19/03/2004, 15h58
  5. Probl�me de link avec Borland C++ 5.5
    Par gelam dans le forum Autres �diteurs
    R�ponses: 5
    Dernier message: 24/11/2003, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo