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 :

Besoin d'une ame charitable pour tester une DLL


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Par défaut Besoin d'une ame charitable pour tester une DLL
    Bonjour a tous

    Je me presente, je suis un passionné de programmation depuis que je suis tout jeune, mais entre la programmation et moi, c'est un peu comme certaines relations avec les femmes....je les adorent mais ce n'est apparement pas reciproque

    Donc n'etant pas tres bon dans ce domaine, et voulant quand meme assouvir ma passion, je me suis jeté sur les basics divers qui se sont succédés depuis 30 ans.
    Je vous rassure je suis aussi le pire des programmeurs basic, meme apres tout ce temps, mais grace a lui j'ai fait plein de choses que je n'aurais meme pas revé faire en C

    Le C est plus qu'un reve pour moi, mais on ne sait jamais ...dans une autre vie

    Donc voici les presentations faites...je me permet de vous deranger, pour vous demander un petit service.
    Je sais que ceci risque de ne pas plaire a certains, mais comme je vous l'ai dit plus haut, quand on a ce qu'on a ...on fait ce que l'on peut....pas ce que l'on veut

    Et moi ce que j'aurais voulu toujours faire...c'est des vraies DLL
    Pas active X, les vraies que l'on retrouve dans windows.
    Ceci etant impossible avec VB, la mort dans l'ame j'ai du m'en passer.

    Seulement voila, un petit malin, a eu l'idée de mettre a la porté des programmeurs VB, les sacro saintes DLL standard, enfin d'apres ses dire
    Je le remercie donc au passage
    http://bbil.developpez.com/traductions/vb6/create-dll/

    Bref, grace a un membre du forum VB (L'autodidacte) et ses gentilles explications, j'ai pu modifier mon VB6 pour qu'il créé une de ces DLL toute simple

    Seulement voila, j'aurais aimé etre sur que c'est bien une DLL standard, comme les connait le C, et c'est donc a ce moment que j'aurais besoin d'une ame charitable qui pourrait me donner le code en C pour faire fonctionner cette petite
    Je ne voudrais pas que par "DLL standard", ce membre parle seulement du fait que les DLL faites par cette combine, ne soit plus obligées d'etre enregistrées dans la BDR

    Voici donc la DLL et tous ces codes
    http://erdsjb.free.fr/PureStorage/Pr...DLLinteger.zip

    M'excusant encore de vous deranger, vous les professionnels de la programmation

    Je vous remercie de m'avoir lu et vous souhaite une excelente journée

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    J'ai lancé le .exe
    J'ai eu une petite fenêtre avec le chiffre 5
    Puis avec le nombre 5120,
    Puis f'affichege d'une fenètre (environ 10 cm) nommée Form1
    Pareil une seconde fois.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Par défaut
    Oui si tu regarde le code source qui est livré avec, tu verras que c'est juste le chiffre 5 qui est envoyé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Declare Function TestPb Lib "Dll.dll" (ByRef VarString As Long) As Long
     
    Public Sub Form_Load()
     
     ChDrive (Left(App.Path, 1))
     ChDir App.Path
     Dim RetourDll As Long
     RetourDll = TestPb(5)
     MsgBox RetourDll
     
    End Sub
    Et que dans la DLL, je le multiplie 10 fois par 2

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Option Explicit
     
    Public Const DLL_PROCESS_DETACH = 0
    Public Const DLL_PROCESS_ATTACH = 1
    Public Const DLL_THREAD_ATTACH = 2
    Public Const DLL_THREAD_DETACH = 3
     
    Public Function DllMain(hInst As Long, fdwReason As Long, _
      lpvReserved As Long) As Boolean
       Select Case fdwReason
          Case DLL_PROCESS_DETACH
             ' No per-process cleanup needed
          Case DLL_PROCESS_ATTACH
             DllMain = True
          Case DLL_THREAD_ATTACH
             ' No per-thread initialization needed
          Case DLL_THREAD_DETACH
             ' No per-thread cleanup needed
       End Select
    End Function
     
     
    Public Function TestPb(Number As Long) As Long
     
     MsgBox Number
     Dim i As Integer
     
     For i = 1 To 10
      Number = Number * 2
     Next
     
     TestPb = Number
     
    End Function
    Ce que j'aurais aimé c'est un code VC 6 ++ qui permette de remplacer mon code VB6, c'est a dire appeller cette DLL dans les memes conditions

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 482
    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 482
    Par défaut
    Joli article sur le VB6.
    C'est le genre de bidouille que les programmeurs VC++6 font pour avoir des messages d'erreurs plus explicite avec la STL (librairie standard du C++). Bidouilleurs de tous les langages, unissez-vous.

    Pour ma par, pour vérifiez la qualité de l'exportation dune dll, j'ai toujours tendance à utiliser Dependency Walker (http://www.dependencywalker.com/)

    Cet utilitaire donne la liste des fonctions exportées par les dll.

    Une DllActiveX, est une Dll standard, elle exports 4 fonctions avec les conventions C.
    Elle utilise COM pour que les autres méthodes et classes soit visible, et c'est un mécanisme standard sous Windows, mais effectivement ce n'est pas du C/Win32.

    .NET, la nouvelle plateforme M$ utilise aussi facilement COM(ActiveX) que Win32(C), et COM est bien plus puissant. Donc pas de complexe.

    Un export Win32, c'est juste pour l'interopérabilité avec des langages non .NET. Et beaucoup de mécanismes deWindows n'accepte que COM.

    Regardez avec Dependency Walker, les deux types de dll et vous pourrez très facilement les distinguer. Et même voir les anomalies d'export des dll.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations forums :
    Inscription : Mars 2006
    Messages : 85
    Par défaut
    Bonjour,

    J'ai vu avec Dependancy Walker (et ton fichier *def) les deux fonctions exportées: DllMain ORDINAL 1 et TestPb ORDINAL 2.

    Je ne connais pas VB, mais si tu donnes le prototype des fonctions que tu veux qu'on teste on pourrait le faire sans regarder ton code VB.

    Le prototype des fonctions c'est la liste + type de arguments et le type (ou void) de retour. Par exemple pour une fonction qui lit en args. un réel et un entier et retoune y^n le prototype pourrair être:

    double power (double x, int i);

    Tu devrais aussi dire la convention d'export que ton compilo utilise: _fastcall, _cdecl ou _stdcall. Chaque convention travaille d'un mode différent. ceci oblige que le prog. appellant et le prog appellé (ta dll) utilisent la même convention. Wint NT et succeseurs utilisent _stdcall.

    Bonne journée!

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Par défaut
    Bonjour et merci beaucoup de votre reponse BACELAR

    Je n'ai pas tout compris ce que vous avez eu l'amabilité de m'expliquer, mais j'ai téléchargé l'outil que vous m'avez indiqué.

    Effectivement c'est un outil de professionnel
    La seule chose que j'ai comprise, c'est au milieu a droite la liste des fonctions de ma DLL.

    Je suis perdu...certains disent que ce genre de DLL ne pourra jamais etre une DLL standard, d'autre comme vous laisse planer un doute

    Pour ce qui est de DOT NET, j'ai acheté aussi le 2003, pas encore utilisé car je l'ai trouvé tres compliqué, et je ne crois pas non plus que VB.NET soit capable de creer des DLL standard simples comme le fait VC6 ++

    Cette histoire de DLL c'est vraiment l'enfer

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Par défaut
    Bonjour FDR2006

    En fait je ne sais pas grand chose de cette DLL
    J'ai fait comme indiquait le membre de Developpez pour creer une soi-disante DLL standard avec VB6.

    C'est meme encore pire, car c'est une traduction d'une methode apparement.
    Je ne connais pas la convention, mais je suppose, enfin j'espere comme vous l'avez dit que c'est _stdcall autrement ça complique encore un peu je crois.

    Normalement, j'envois un long (5) et la DLL le multiplie 10 fois par 2, pour retourner le resultat en long egalement.
    C'est tout ce que je connais car ça c'est moi qui l'ai ecrit...
    Pour le reste je ne sait pas du tout ce que fait VB

    En tout cas merci a vous deux de votre reponse

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/09/2009, 15h19
  2. besoin d'une ame charitable en php
    Par bijouxenbois dans le forum Devis
    Réponses: 9
    Dernier message: 15/04/2008, 14h48
  3. trigger pour tester une clé primaire
    Par keumlebarbare dans le forum PL/SQL
    Réponses: 3
    Dernier message: 15/04/2007, 10h29
  4. Réponses: 7
    Dernier message: 09/11/2006, 18h57
  5. [Wifi]Logiciel pour tester une connection wifi ?
    Par genoud dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 15/08/2005, 13h29

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