Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1471 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  G crée une dll avec delphi, comment creer les .h et .lib pour le C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

G crée une dll avec delphi, comment creer les .h et .lib pour le C++

n°448779
van_axl
Posté le 04-07-2003 à 14:46:03  profilanswer
 

Ma dll est faite sous delphi 5 . MAis elle doit etre utiliser par qqu'un qui programme en C++. Il me dit qu'il n'y a pas moyen de l'utiliser sans avoir le .h et .lib associer. Je ne lui avait fourni que la dll et les types de fonctions à appeler avec les différents arguments. Ca ne lui suffit apparement pas.
Donc comment je pourrait cree ces fichiers avec Delphi .
thx

mood
Publicité
Posté le 04-07-2003 à 14:46:03  profilanswer
 

n°448790
LetoII
Le dormeur doit se réveiller
Posté le 04-07-2003 à 14:56:26  profilanswer
 

Normalement il peut utiliser les fonctions LoadLibrary et GetProcAddress pour appeler tes fonction exportée grace à leur non, après à toi de t'arranger pour que les convetions d'appel et les types concordent. Y a des utilitaires qui existent pour chopper les fonction export"es d'une dll et leur numero ordinal, si jamais ça marche pas avec le nom de la fonction.
 
EDIT ça peut peut être aider:
 
GetProcAddress


Message édité par LetoII le 04-07-2003 à 15:01:50

---------------
Le Tyran
n°448809
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-07-2003 à 15:09:45  profilanswer
 

Van_axl a écrit :

Je ne lui avait fourni que la dll et les types de fonctions à appeler avec les différents arguments. Ca ne lui suffit apparement pas.


 
il est soit nul soit paresseux [:ddr555]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°448814
LetoII
Le dormeur doit se réveiller
Posté le 04-07-2003 à 15:13:50  profilanswer
 

antp a écrit :


 
il est soit nul soit paresseux [:ddr555]


 
 :jap:


---------------
Le Tyran
n°448823
van_axl
Posté le 04-07-2003 à 15:21:18  profilanswer
 

je pense qu'il est un peu des 2,  
bref je lui ai effectivement bien indiquer comment appeler les fonctions, et mes fonction sont declarer en stdcall (je lui est aussi dit ca )donc ca devrait noramelement passer , non ?  
Peut-etre faudrait -il que je les mettent en Cdelc ?

n°448825
LetoII
Le dormeur doit se réveiller
Posté le 04-07-2003 à 15:23:03  profilanswer
 

C pas naicessaire, faut juste qu'il oublie pas de préciser le stdcall dans son code.


---------------
Le Tyran
n°449106
Yana
Posté le 04-07-2003 à 21:36:14  profilanswer
 

LetoII a écrit :

Normalement il peut utiliser les fonctions LoadLibrary et GetProcAddress pour appeler tes fonction exportée grace à leur non, après à toi de t'arranger pour que les convetions d'appel et les types concordent. Y a des utilitaires qui existent pour chopper les fonction export"es d'une dll et leur numero ordinal, si jamais ça marche pas avec le nom de la fonction.
 
EDIT ça peut peut être aider:
 
GetProcAddress


 
 
Ce programme dont tu parles, il m'interresse :)
Je peux me le procurer ou ?

n°449205
LetoII
Le dormeur doit se réveiller
Posté le 04-07-2003 à 23:57:04  profilanswer
 

Yana a écrit :


 
 
Ce programme dont tu parles, il m'interresse :)
Je peux me le procurer ou ?


 
En général c des outilis fournis avec les compilos  [:spamafote]  
 
J'ai aps de nom précis en tête:
 
 [:google]


---------------
Le Tyran
n°450248
van_axl
Posté le 07-07-2003 à 15:11:23  profilanswer
 

bon si je vous dis que une des fonctions est :
 
float Read(VOID);
 
float Read(VOID)
 {
 
 /* Insert Code Here */
 
 }
 
Est ce que qqu'un pourrait m'esrire vite fait un bout de code en C++ qui appelerai cette fonction dans la dll : " mydll.dll" .
thanks car je suis pas tres fort un C++

n°450273
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-07-2003 à 15:22:42  profilanswer
 

un truc approximatif :
 


typedef float (*FP_READ)(void);
 
 
HINSTANCE module;
FP_READ Read;
float f;
module = LoadLibrary("mydll.dll" );
if(module)
{
  Read = (FP_READ)GetProcAddress(module, "Read" );
  if(Read)
    f = Read();
  FreeLibrary(module);
}


Message édité par antp le 07-07-2003 à 15:31:19

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le 07-07-2003 à 15:22:42  profilanswer
 

n°450285
van_axl
Posté le 07-07-2003 à 15:29:09  profilanswer
 

ok thanx antp , je vais jeter un coup d'oeil j'ai pris Dev C++ pour le tester.

n°450290
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-07-2003 à 15:30:32  profilanswer
 

j'ai édité après avoir testé ;) là ça compile mais faut voir si ça marche :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°450392
van_axl
Posté le 07-07-2003 à 16:55:16  profilanswer
 

je suis nul ou quoi !!  
J'ai simplement copier coller ton code mais ca passe carrement pas , il faut mettre des tucs précis en  au début du code en C++.
j'ai ca comme erreur :
 
4 C:\TEMP\C__~1\main.cpp
'HINSTANCE' is used as a type, but is not defined as a type.

n°450398
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-07-2003 à 17:01:51  profilanswer
 

ça doit être défini dans windows.h je pense
mais tu mets un unsigned int et ça doit passer ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°450469
van_axl
Posté le 07-07-2003 à 17:40:58  profilanswer
 

pour le loadlibrary, je dois pas inclure un .h dans mon code ?

n°450471
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-07-2003 à 17:41:43  profilanswer
 

probablement windows.h


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°450480
van_axl
Posté le 07-07-2003 à 17:54:25  profilanswer
 

ok apres, quelques bidouille, la syntaxe à l'air bonne ! mais y a des soucis de link, je vais ssayer de downloader borland c++ trial car je soupsonne dev C++ de bugger un peu.
Thanx antp (une fois de plus) je te tiendrais au courant.

n°450514
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-07-2003 à 18:29:20  profilanswer
 

ouais enfin ce que j'ai donné c'est pas un code complet hein... tu as bien mis ça dans un main, WinMain, ou un truc du genre ? Enfin dans un truc qui est sencé être un programme Windows ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°451873
van_axl
Posté le 09-07-2003 à 10:09:35  profilanswer
 

bon voila, ca passe bien , j'ai enfin appeler la dll. Seulement avec Dev C++, ca passait pas, donc j'ai download borland C++ builder et la c'est nickel.
D'aillleur y a pas une version de borland C++ builder perso gatuite, un peu comme delphi car la celle que j'ai c'est entrprise trial , evaluation de 60 jours ?
Bon c'est trop le meme sujet, mais s'il le faut j'en créé un autre .
 @ +

n°451887
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-07-2003 à 10:17:21  profilanswer
 

Non, il n'y en a pas :/
La version standard doit être dans les 100-120 ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°452474
van_axl
Posté le 09-07-2003 à 17:54:33  profilanswer
 

J'ai encore une question .
mon code marche pas mal, mais voila :
j'ai mon type et l'appel de ma dllqd on appuie sur un bouton.
 

typedef float (__stdcall *MYDLLFUNCF)(void );
 
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    HINSTANCE hinstDLL;
    MYDLLFUNCF ImpFuncDLL;
    float Rep;
 
    if ((hinstDLL=LoadLibrary("mydll.dll" ))) {
 
        ImpFuncDLL =  GetProcAddress(hinstDLL, "Read" );
        if (ImpFuncDLL) {
            Rep= ImpFuncDLL();
            ShowMessage(Rep);
        }
        FreeLibrary(hinstDLL);
    }else{
    ShowMessage("dll non présente" );
    }
 
}

Donc la le code est modifier mais normalement ce qui est en gras est du INT.
Donc j'ai voulu appeler une autre fonction de ma dll : Read, qui renvoie un float.
Seulement tell que j'ai modifié le code , il me sort une erreur à la ligne du 1er IF , comme quoi il peut pas convertir le int de GetProcAdress en Float de mon type : MYDLLFUNCF  

n°452489
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-07-2003 à 18:00:46  profilanswer
 

Si ta fonction renvoie un int au lieu d'un float il faut modifier le typedef en conséquence...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°452501
van_axl
Posté le 09-07-2003 à 18:07:27  profilanswer
 

bas c'est ce que j'ai fait plus haut , mais j'ai l'erreur sur la ligne :
     ImpFuncDLL =  GetProcAddress(hinstDLL, "Read" );  
impossible de convertir int en float .
Donc vu que le impfuncdll est declarer par mon typedef en float, j'en deduis que c'est GetProcAddress qui est en int.
Mais comment faire pour que GetProcAddress soit float aussi ?


Message édité par van_axl le 09-07-2003 à 18:07:43
n°452658
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-07-2003 à 20:43:19  profilanswer
 

ImpFuncDLL = (MYDLLFUNCF)GetProcAddress(hinstDLL, "Read" );  
 
 
comme je l'avais fait dans mon exemple en fait :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°453121
van_axl
Posté le 09-07-2003 à 23:31:34  profilanswer
 

exact ! bon j'essaie ca demain au boulot, ca devrait le faire !

n°453284
van_axl
Posté le 10-07-2003 à 09:45:42  profilanswer
 

Eh yes, t'as une fois de plus raison, ca marche comme tu le dis juste avant. Franchement merci à toi pour l'aide que tu fourni dans ce forum.
Sinon uin autre truc totalement différent, j'ai essayer ton soft pour gere les film (antp movie ...) et il est bien génial, j'ai lonhtemp chercher un soft comme ca (plutot que de mettre ca dans un bete tableur en lignes). Et celui la donne exactement ce que j'attendias d'un tel soft. Bref félicitation. D'ailleur je me demandis si ca t'avais pris du temp pour le faire, car il y apas mal de script pour pas mal de site web de movies ! .
Bon sur ceux thx pour ton aide, @ +
 
Van_axl

n°453289
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-07-2003 à 09:51:26  profilanswer
 

:D
bah ça prend du temps, mais comme c'est étalé sur plusieurs mois (en fait deux ans) je sais pas vraiment chiffrer ça.
 
Et les scripts je n'en ai fait que pour quatre ou cinq sites, le reste ce sont des gens qui me les ont envoyés ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  G crée une dll avec delphi, comment creer les .h et .lib pour le C++

 

Sujets relatifs
Remplire un formulaire PHP sous Delphi[PHP] Créer un lien de confirmation d'inscription
[Delphi 6] : Afficher les infos de versions[ VBA ] creer 1 table en affectant une liste de choix pr ses champs
Zipper des fichiers sous delphi[Delphi] multitache : activer une form à la fin d'une tache
[ Delphi ] Construire ou compiler ?Executer un fichier sur un ftp sous delphi?
Probleme avec delphi[Eclipse] Bizzarerie pour créer un diagramme d'activité
Plus de sujets relatifs à : G crée une dll avec delphi, comment creer les .h et .lib pour le C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR