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
déclaration de variables [ par Bo57 ]
Bonjour à tous. Je bute sur une function comprenant un mot réservé. J'ai parcouru bien des forums sans succès. J'aimerais lire une valeur dans un aut
Information supplémentaire au sujet d'un ThreadID lié à un process. [ par marcer17 ]
Voici ma situation, lorsque j'exécute un installation de mon produit, via inno setup, j'utilise un DLL pour configurer ma base de donnée. Ce DLL util
PB Déchargement DLL avec Socket [ par zawab ]
Bonjour à tous, J'ai écris une dll (Delphi6), qui permet de créer une connexion socket sur un serveur et d'envoyer et recevoir des messages. elle cont
modifier contenue d'une BDD avec un BDEdit [ par Tamir57 ]
Bonjour, Je suis débutant en C++ , j'utilise un DBGrid et des DBEdit avec C++ builder (RAD sudio 2010). Mon DBGrid est bien connecté à ma base de do
Caracteres speciaux [ par Carafon ]
[^^happy13] Conversion VB --> Delphi Bonjour, suite à quelques déboires avec VB9 et les DLL, j'essaie de passer à Delphi qui me semble plus efficace.
*** Importer une DLL dans son projet - HELP ME - *** [ par flasher_13 ]
[img]http://img691.imageshack.us/img691/7824/dllq.jpg[/img] Bonjour à tous, ma demande est simple, je voudrais seulement intégrer une DLL à mon proje
fichier accès direct avec un format propriétaire [ par md21 ]
Bonjour, depuis de nombreuses années, j'utilise des fichiers à accès direct avec des formats propriétaires que je défini moi même. La démarche est la
Livres en rapport
|
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|