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

C++/CLI Discussion :

Probleme de passage de string entre DLL win32 et projetC#?


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair� Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    D�tails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Par d�faut Probleme de passage de string entre DLL win32 et projetC#?
    Bonjour a tous...

    Voila j'ai une DLLwin32 qui me renvoie une string (�crite en pascal) et j'ai un programme c# (je suis sous delphi2006) qui doit me r�cup�rer cette string comme montr� ci-dessous;

    la DLL:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
     
    uses
      SysUtils,
      Classes,
      ShareMem;
     
    {$R *.res}
     
    function Phrase(): string;stdcall;
    begin
       Phrase := 'la phrase a envoyer';
    end;
     
     
    exports Phrase;
    le source C#:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
         //import de la fonction de DLL
         [DllImport("c:\\envoieString.dll")]
         private static extern string Phrase();
     
         string maPhrase = Phrase();  //récupèration de ma phrase
    Mais le probleme est que quand j'ex�cute le source C# j'ai une erreur d'ex�cution � la ligne "string maPhrase = Phrase(); "...j'ai l'erreur suivante:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    La référence d'objet n'est pas définie à une instance d'un objet
    J'ai ce probl�me que pour le type string et je ne comprend pas...

    Quelqu'un peut il m'expliquer ce qui se passe et m'expliquer ce que je dois faire?

    Merci d'avance pour l'aide

  2. #2
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Par d�faut
    Salut !

    Tu fais l'import de ta dll dans la m�me classe que celle o� tu l'utilises ?

    Sinon je ne connais pas trop le pascal mais j'ai l'impression que ta fonction ne renvoie pas "Phrase"... Je me trompe ?

    ++

  3. #3
    Membre �clair� Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    D�tails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Par d�faut
    SesechXP � �crit:
    Tu fais l'import de ta dll dans la m�me classe que celle o� tu l'utilises ?
    Je ne comprend pas ta question...

    SesechXP � �crit:
    Sinon je ne connais pas trop le pascal mais j'ai l'impression que ta fonction ne renvoie pas "Phrase"... Je me trompe ?
    ma fonction renvoie 'la phrase a envoyer' car en pascal quand tu ecris:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    function Phrase(): string;stdcall;
    begin
       Phrase := 'la phrase a envoyer';
    end;
    ca reviens � �crire en c#:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    function string Phrase();
    {
       return "la phrase a envoyer";
    }
    Bon ben j'ai toujours pas compris pourquoi �a marche pas...

  4. #4
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Par d�faut
    Ce bout de code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    //import de la fonction de DLL
    [DllImport("c:\\envoieString.dll")]
    private static extern string Phrase();
     
    string maPhrase = Phrase();  //récupèration de ma phrase
    Tout est dans la m�me classe ?

    Car comme la fonction de ta dll est en "private" elle est inaccessible depuis les autres classes.

    ++

  5. #5
    Membre �clair� Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    D�tails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Par d�faut
    Oui

  6. #6
    Membre �clair� Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    D�tails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Par d�faut
    personne ne peut me dire comment on peut assurer le passage de string de Win32 � .Net

Discussions similaires

  1. Passage d'objets entre DLL
    Par oodini dans le forum C++
    R�ponses: 5
    Dernier message: 01/04/2009, 11h27
  2. Probl�me de passage de string entre DLL
    Par oodini dans le forum C++
    R�ponses: 4
    Dernier message: 24/03/2009, 16h34
  3. Passage de valeurs entre dll en C++ vers visual basic
    Par martos dans le forum VB 6 et ant�rieur
    R�ponses: 2
    Dernier message: 15/07/2008, 11h08
  4. R�ponses: 1
    Dernier message: 16/03/2007, 15h28
  5. Passage de String � une DLL
    Par tsp dans le forum C++
    R�ponses: 1
    Dernier message: 09/03/2006, 16h53

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