Accueil > Forum > > > > Déclaration d'une struct contenue dans une DLL C++
Déclaration d'une struct contenue dans une DLL C++
vendredi 5 mai 2006 à 11:44:50 |
Déclaration d'une struct contenue dans une DLL C++

Sharleen
|
Déjà, bonjour ! ^^ Voici mon problème : Je construis une DLL en C++, qui comprend une structure ayant la forme suivante : __declspec(dllexport) __stdcall struct CarreControle{ int Left, Top, Right, Bottom; double r,g,b; };Mon soucis est que j'essai d'utiliser cette DLL dans une application Delphi, et je ne sais pas comment déclarer la structure en Delphi... Et après quelques heures passées sous Google, je n'ai toujours aps trouvé ce qui m'interressait... Voilà, merci par avance ! 
|
|
vendredi 5 mai 2006 à 14:57:39 |
Re : Déclaration d'une struct contenue dans une DLL C++

elguevel
|
Et si tu refait ta structure dans Delphi, çà t'evitera d'aller la chercher !
type CarreControle = record
Left, Top, Right, Bottom : Integer;
r,g,b : Double;
end;
|
|
vendredi 5 mai 2006 à 15:21:45 |
Re : Déclaration d'une struct contenue dans une DLL C++

Sharleen
|
J'ai déjà tenté cette solution : ma structure n'était pas passée dans la DLL, mais je la redéclarais de la même manière que celle que tu as proposé...
Mais le compilateur me renvoyait ça comme erreur :
Type of actual and formal var parameters must be identical
Quand j'essayais de compiler ma fonction utilisant la variable CarreControle :
Déclaration de la fonction dans la DLL C++ :
int __declspec(dllexport) __stdcall LaunchVisucolorimetre(int SettingMode, int Rayon, int Taille_Carre, int Taille_Crop, bool Montre_Log_LightCtrl, bool Montre_MoyIm, bool Montre_MoyCarre, double & RougeMoyImg, double & VertMoyImg, double & BleuMoyImg, CarreControle CarreN )
Déclaration de la fonction DLL dans le fichier Delphi:
FUNCTION LaunchVisucolorimetre( SettingMode, Rayon, Taille_Carre, Taille_Crop : integer; Montre_Log_LightCtrl, Montre_MoyIm, Montre_MoyCarre : boolean; RougeMoyImg, VertMoyImg, BleuMoyImg : double; CarreN : CarreControle ) : integer; stdcall ; external 'Project_DLL_Canon.dll';
Utilisation dans le code Delphi:
procedure TFormTestVisucolorimetre.ButtonGoClick(Sender: TObject); var SetMod, Rayon, Carre, Crop: integer; Log, MoyIm, MoyCarre: bool; AppliPath: string; RougeMoyImg, VertMoyImg, BleuMoyImg: double; CarreN : CarreControle;
begin AppliPath:= ExtractFilePath(Application.exeName);
if(RadioButtonMire.Checked)then begin SetMod:=0; end; if(RadioButtonFantome.Checked)then begin SetMod:=1; end; if(RadioButtonPDV.Checked)then begin SetMod:=2; end; Rayon:= strtoint(EditTailleCercle.Text); Carre:= strtoint(EditTailleCarre.Text); Crop:= strtoint(EditCrop.Text); Log:= CheckBoxActiver.Checked; MoyIm:= CheckBoxMoyenne.Checked; MoyCarre:= CheckBoxControle.Checked;
LaunchVisucolorimetre(SetMod,Rayon,Carre,Crop, Log,MoyIm,MoyCarre, RougeMoyImg,VertMoyImg,BleuMoyImg, CarreN);
C'est pour ça que je pensais plutôt déclarer ma structure dans la DLL, mais je ne sais pas comment déclarer une struct en Delphi... D'où ce topic :D
|
|
vendredi 5 mai 2006 à 15:39:04 |
Re : Déclaration d'une struct contenue dans une DLL C++

elguevel
|
ba pour declarer une structure en delphi tu fais :
type = record
: ;
: ;
...
: ;
end;
Et pour avoir un pointeur sur ta structure tu peux ajouter endessous :
= ^;
Mais fait gaffe si tu as ce message c'est peu être que le type Integer ou Double sur Delphi n'est pas le meme que sur C.
Cà se trouve chacun des compilo code leur Entier sur un nombre d'Octet différents !!? A voir ... (Utilise DWORD au pire, c'est un type Windows..Donc il sera surement identique d'un editeur à l'autre)
Mais normalement la redefinition de structure, marche très bien !
J'espere que tu m'as compris :-s
A+
|
|
vendredi 5 mai 2006 à 16:09:03 |
Re : Déclaration d'une struct contenue dans une DLL C++

Sharleen
|
J'ai déjà essayé avec un pointeur, et je voulais savoir comment déclarer une structure C++ (struct) comprise dans une DLL en Delphi (avec external ...) Déclarer une structure de type Record, je savais déjà faire, et c'est Kaput aussi :)
Mais merci quand même ^^
|
|
vendredi 5 mai 2006 à 16:20:17 |
Re : Déclaration d'une struct contenue dans une DLL C++
|
vendredi 5 mai 2006 à 22:49:34 |
Re : Déclaration d'une struct contenue dans une DLL C++

f0xi
|
un conseil, regarde la declaration de TRect dans l'unité Types de Delphi. regarde au niveau des (*HPPEMIT ... *) c'est du C ... tu veras comment il gerent la structure TRect chez borland. et en concordance de type entre C++ et Delphi : Int = entier 32 bit signé (donc Integer) Float = double réel 32 bit signé (Double) (en toute logique) le type DWORD ou QWORD correspondent aux type Cardinal et Double (a verifier pour QWORD)
|
|
samedi 6 mai 2006 à 01:42:07 |
Re : Déclaration d'une struct contenue dans une DLL C++

Emandhal
|
et ca, ca donne quoi? Type CarreControle = Packed Record Left, Top, Right, Bottom: Integer; r, g, b: Double; end;
Tout problème a sa solution... Mais en général, celle que l'on trouve n'est jamais la bonne...
|
|
samedi 6 mai 2006 à 03:05:35 |
Re : Déclaration d'une struct contenue dans une DLL C++

shining
|
Bone allez une chtite dernière avant le grand dodo !!! :p
en plus je vois que Delphifr m'a encore bien eu !!! car tout à l'heure j'avais répondu à ce message mais au moment de faire "Ajouter" j'ai eu droit à un bon "une erreur c'est produite lors de l'envoi ... patati patata... vous pouvez toujours tenter de recuperer vôtre message en tapant 3617 (T)ULLA(danlcul) 26 €/min" lol j'exagère comme d'hab mais bon ... , une fois n'est pas coutume j'ai fait un copier/coller dans un txt par simple précaution
donc le voilà car je crois que ça vient de là :
----------------------------
Salut,
***"
__declspec(dllexport) __stdcall struct CarreControle{
int Left, Top, Right, Bottom;
double r,g,b; <=== double ça fait beaucoup pour une valeur RGB c'est pas byte ?
};***"
bon déja on exporte par une structure de type TRecord c'est inutile !!!, il suffit de déclarer dans Delphi la même Structure (parfois il est nécessaire d'ajouter "packed" record suivant la structure )
***"int __declspec(dllexport) __stdcall LaunchVisucolorimetre(int SettingMode, int Rayon, int Taille_Carre, int Taille_Crop,
bool Montre_Log_LightCtrl, bool Montre_MoyIm, bool Montre_MoyCarre,
double & RougeMoyImg, double & VertMoyImg, double & BleuMoyImg, CarreControle CarreN )***"
dans cette déclaration RougeMoyImg, VertMoyImg, BleuMoyImg sont de type "var"
ce qui nous donne
function LaunchVisucolorimetre(SettingMode , Rayon , Taille_Carre, Taille_Crop: Integer; Montre_Log_LightCtrl , Montre_MoyIm: Boolean, Montre_MoyCarre: Boolean; var RougeMoyImg , VertMoyImg, BleuMoyImg: Double; CarreControle : TCarreControle): integer; stdcall ; external 'Project_DLL_Canon.dll';
@+
------------------------------------------
|
|
samedi 6 mai 2006 à 03:06:53 |
Re : Déclaration d'une struct contenue dans une DLL C++
|
Cette discussion est classée dans : dll, déclaration, structure, contenue, struct
Répondre à ce message
Sujets en rapport avec ce message
DLL et record (structure) [ par oberown ]
Comment faire pour créer une DLL en C++ qui passe une structure (record) qu'on pourra utiliser dans un programme delphi ?
Unique déclaration de dll pour l'ensemble du projet [ par orelien ]
Bonjour,J'ai crée une DLL pour mon projet, et je compte l'utiliser pour toutes mes fiches.J'aimerais savoir s'il existe un moyen de déclarer cette dll
Pointeur invalide dans fonction DLL [ par Bacterius ]
Bonjour, toujours dans le cadre de la création d'une DLL Windows, j'ai encore un petit problème après le HWND_BROADCAST. Je vous explique le contexte
Map vectorielle [ par bobzhang ]
Bonjour,j'ai développé une petite application GIS avec pour le moment une image du monde Bipmap. je souhaiterais passer au vectoriel. J'ai trouvé quel
est-ce qu'il y a des procédure nous permettant de modifier la structure d'une table paradox ou bien de modifier le type ou la taille d'un champ [ par b20n00 ]
Salut. peut-être que vous savez qu'on peut créer une table paradox ou dbase par une procédure DELPHI en utilisant la méthode TTable.CreateTable tout e
Enregistrer une dll en base de registre [ par aya8619 ]
bonjours à tous donc voilà j'ai une dll que je veut ajouter en base de registre mais je ne sait pas comment faire, j'ai essayé avec regsvr32 mais ça n
dll c++ [ par chowdid ]
Bonjour, comment interfacer sous delphi cette fonction d'une dll en c++Code de la dlltypedef enum{ YUY2=0, RGB555, RGB24}ColorSpace;typedef e
Debogage d'un dll [ par khaliloenit ]
Bonjour, J'utilise [b]Borland Delphi6[/b] et je développe un dll .maintenant je veux tester mon dll et savoir comment se déroulent les choses en inte
Inclure libmysql.dll [ par kopierreko ]
Bonjour, Je cherche à ajouter libmysql.dll à mon exécutable pour n'avoir d'un seul fichier. Quelqu'un peut m'aider ? Merci :)
Limiter le nombre d'appel à une DLL. [ par OlivierAZT ]
Bonjour, Je cherche à limiter le nombre d'appel à une DLL. Je m'explique : Par exemple, une des fonctions de la DLL est de programmer un microcontrôle
Livres en rapport
|
Derniers Blogs
[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|