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

Visual C++ Discussion :

[Visual C++ 2005][debutant] pb tout bete de linkage


Sujet :

Visual C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Par défaut [Visual C++ 2005][debutant] pb tout bete de linkage
    Salut,

    j'ai un probleme tout bete de linkage. Je cherche a utiliser la dll fournie par sqlite (sqlite3.dll). J'ai genere mon .lib avec l'outil link de visual etc, tout ca est ok.

    Le pb maintenant, c'est que je n'arrive pas a linker correctement le .lib.

    Je vais dans les proprietees du projet > linker > commande line : et je rajoute juste "sqlite3.lib" dans la command line.
    tout compile, mais au linkage j'ai des erreurs du type :

    error LNK2031: unable to generate p/invoke for "extern "C" int __clrcall sqlite3_bind_blob(...

    Faut il faire autre chose de special ?
    merci d'avance

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    il faut que tu précises explicitement la convention d'appel, là il cherche le point d'entrée managé avec la convention clrcall, qu'il ne trouve pas bien sur vu que c'est une lib native

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Par défaut
    merci de ta reponse,

    j'ai essaye de modifier dans
    propriete projet > C/C++ > advandced > calling convention, il me propose trois options
    _cdecl
    _fastcall
    _stdcall

    peut importe celle que je choisi, il me donne cette erreur a la compile :
    Command line error D8016 : '/clr:pure' and '/Gz' command-line options are incompatible
    (avec /Gr pour _fastcall et /Gd pour _cdecl)

    Il faut que je remette <inherit from parent or project default> pour que ca recompile mais toujours le meme probleme de link.

    Ce n'est peu etre pas ce qu'il faut faire ?

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    il faut que tu enleves le mode de compilation /clr:pure si tu veux utiliser l'import de la lib comme ca avec IJW

    sinon, si tu veux rester en pure, il faut utiliser DLLImport, et bonus, tu pourras meme préciser la convention d'appel

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Par défaut
    merci beaucoup !

    En effet, en enlevant le mode /clr:pure, le link ne pose plus de problemes.

    Pour ce qui est de DLLImport (car je supose que c'est mieux de rester en /clr:pure), peut t on aussi importer des classes avec ?

    encore merci pour ton aide

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    c'est "mieux", mais pas indispensable.

    DLLImport cependant ne permet pas d'importer des classes, jute des types ; le mieux étant peut-etre de faire un wrapper, comme tu peux le voir dans ce tutoriel http://nico-pyright.developpez.com/t...exampleWrapper

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Par défaut
    C'est pour ca que j'avais du mettre de cote DLLImport, en fait j'avais deja mis de cote l'idee du wrapper pour conserver l'heritage, mais je vais relire ton article bien en detail, car l'utilisation de dll sous visual n'est pas encore completement claire pour moi

    merci encore pour l'aide.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 55
    Par défaut
    Citation Envoyé par yannnomad Voir le message
    Salut,
    J'ai genere mon .lib avec l'outil link de visual etc, tout ca est ok.
    Bonjour,

    Moi j'aimerais bien déjà arriver à faire ça...
    Je ne trouve pas de documentation ! Quelles ligne de commande faut-il taper ?

    +
    Chacha

  9. #9
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    si tu veux qu'un .lib soit généré, il faut surtout avoir des choses à exporter, est-ce le cas ?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 55
    Par défaut
    Citation Envoyé par nico-pyright(c) Voir le message
    si tu veux qu'un .lib soit généré, il faut surtout avoir des choses à exporter, est-ce le cas ?
    Oui; j'ai posté dans ce sujet car il s'agit justement de la Sqlite.dll. Sur le site de sqlite, la version "precompiled for windows" de sqlite est constituée de la DLL et d'un .def, mais pas de .lib.
    Or, je ne sais linker qu'avec un .lib...
    (Il s'agit de Visual Studio 2005, utilisé en C++/CLI)

    +
    Chacha

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Visual studio 2005 se ferme tout seul
    Par Hepil dans le forum Visual Studio
    Réponses: 2
    Dernier message: 27/11/2009, 13h39
  2. Debutant besoin d'aide sous visual cpp 2005 express
    Par Jhulk dans le forum Débuter
    Réponses: 2
    Dernier message: 19/10/2007, 23h10
  3. [Debuter] Delphi avec Visual .NET 2005
    Par kacedda dans le forum Delphi
    Réponses: 4
    Dernier message: 24/05/2006, 13h37
  4. Debutant sur Visual C++ 2005
    Par franco01 dans le forum MFC
    Réponses: 1
    Dernier message: 19/01/2006, 20h24
  5. [debutant]Question toute bete sur le messages
    Par flogreg dans le forum Servlets/JSP
    Réponses: 18
    Dernier message: 09/09/2004, 09h07

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