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++ Discussion :

VB utilisant une dll c++ utilisant une dll cod�e en C


Sujet :

C++

  1. #1
    Membre habitu�
    Inscrit en
    Janvier 2005
    Messages
    13
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 13
    Par d�faut VB utilisant une dll c++ utilisant une dll cod�e en C
    rebonjour.je suis sur un projet en VB et je souhaiterais utiliser une dll cod�e en c++(que je dois coder) qui elle-m�me utilise une dll cod�e en C.
    je n'ai pas droit de modifier la dll en C et j'ai deja cod� une grosse partie en VB.malheureusement,cela ne marche pas.
    je voudrais savoir si ce que je veux faire est possible.merci.
    a bientot.

  2. #2
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Salut

    Ce que tu veux faire est possible oui, mais pr�cise ce qui ne marche pas, �a nous aidera grandement.

  3. #3
    Membre habitu�
    Inscrit en
    Janvier 2005
    Messages
    13
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 13
    Par d�faut
    rebonjour,
    mon programme en visual basic utilise une fonction definie dans une dll cod�e en C.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    'tableaux de 256 octets
    Dim information(0 to 255) As Byte
    Dim resultat(0 to 255) As Byte
     
    Call MIE_controler_seuil(emetteur, commentaire, reference, Produit, operation, "D", 1000, information(), resultat())
    j'ai une erreur memoire qui ferme mon projet.

    il y a surement une incompatibilit� entre le type string en VB et en C.
    c'est pourquoi je demandais si je pouvais creer par visual basic utiliser une dll C++ (a creer) qui utilise la dll C non modifiable.
    merci.

  4. #4
    Fry
    Fry est d�connect�
    Membre confirm� Avatar de Fry
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    150
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 150
    Par d�faut
    si c est possible mais il ne faut pas utiliser le type std::string comme retour de tes fonctions de la dll que tu va appele en VB
    j ai code une dll en c++ utilise en vb et pour ne pas avoir d erreur j utilisais des char*
    le pb c est que je les alloue avec new mais je ne pouvai pas faire de delete (sinon le * est null)
    il doit y avoir une methode plus propre

  5. #5
    Membre exp�riment�
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Par d�faut
    En quoi ajouter une couche C++ permet de reoudre ton probl�me ?

    Ton probl�me c'est l'incomptibilit� entre les string VB et les tabelaux de caracteres en C. Ce n'est pas une surprise, c'est une des principales incompatiblit�s entres langages...

    La solution c'est sans doute d'arriver a definir une tableau de caracteres en VB.

  6. #6
    Membre habitu�
    Inscrit en
    Janvier 2005
    Messages
    13
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 13
    Par d�faut
    j'ai une question pour fry:
    il est donc possible que la fonction en c++ retourne une chaine de caracteres ou un tableau de chaine de caracteres que je pourrai exploiter en VB?
    si oui serait-il possible que tu m'envoies le code?(pour que je comprenne car c++ c'est nouveau pour moi et je suis deja en retard)
    merci.

  7. #7
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Oui c'est possible, en utilisant en C++ les types VB, c'est � dire d�velopper avec COM et utiliser BSTR pour les string.
    http://rp.developpez.com/vb/tutoriels/dll/
    http://www.codeproject.com/string/bstrsproject1.asp

  8. #8
    Fry
    Fry est d�connect�
    Membre confirm� Avatar de Fry
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    150
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 150
    Par d�faut
    Voici un exemple du code que j ai utilise tu peu passer une chaine en argument et comme valeur de retour
    mais il doit y avoir une fuite memoire (new sans delete)

    une fonction de la dll en C++:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    export char* __stdcall SHA1(LPSTR chaine);
     
    char* __stdcall SHA1(LPSTR chaine)
    {
    	CSHA1 sha;
    	char* sign = new char[12];	
    	sha.Update(reinterpret_cast<unsigned char*>(chaine), strlen(chaine));
    	sha.Final();
    	sha.ReportHash(sign,CSHA1::REPORT_HEX);
    	return sign;
    }
    L appel de cette fonction en VB

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
     
    Private Declare Function sha Lib "Cryptdll.dll" Alias "?SHA1@@YGPADPAD@Z" (ByVal lpstrCommand As String) As String
     
    [...]
        Text5.Text = sha(Text4.Text)
    [...]

Discussions similaires

  1. R�ponses: 1
    Dernier message: 06/03/2009, 10h02
  2. R�ponses: 5
    Dernier message: 17/07/2008, 15h45
  3. R�ponses: 4
    Dernier message: 06/04/2006, 10h07
  4. R�ponses: 9
    Dernier message: 16/03/2006, 20h34
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    R�ponses: 1
    Dernier message: 30/08/2005, 21h24

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