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
    Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 13
    Points : 2
    Points
    2
    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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    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
    Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 13
    Points : 2
    Points
    2
    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 régulier 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
    Points : 119
    Points
    119
    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 averti
    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
    Points : 325
    Points
    325
    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
    Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 13
    Points : 2
    Points
    2
    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 éminent sénior

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

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    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 régulier 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
    Points : 119
    Points
    119
    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