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

  FORUM HardWare.fr
  Programmation
  C++

  Shared memory en c++ et delphi :( GlobalAlloc, GlobalLock, etc...

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Shared memory en c++ et delphi :( GlobalAlloc, GlobalLock, etc...

n°462821
Tetedeienc​h
Head Of God
Posté le 20-07-2003 à 19:45:23  profilanswer
 

J'ai besoin de partager une variable entre un programme delphi et un programme C++ compilé comme une DLL.
 
Ca plante au moment de l'appel dans la DLL :'(
 
Dans le programme delphi je fais :

Code :
  1. procedure doChangeInt( p : THandle) ; stdcall; external 'occt.dll' name 'stop';
  2. procedure TForm1.Button1Click(Sender: TObject);
  3. var
  4. temp : THandle;
  5. myint: PInteger;
  6. begin
  7. Temp := GlobalAlloc(GMEM_MOVEABLE,4);
  8. DoChangeInt(Temp);
  9. myint := GlobalLock(Temp);
  10. Edit1.Text := IntToStr(myint^);
  11. GlobalUnlock(Temp);
  12. end;


 
Dans la DLL C++ je fais
 

Code :
  1. void stop(HGLOBAL i)
  2. {
  3.     int* myint;
  4.     myint = (int*)::GlobalLock(i);
  5.     *myint=2;
  6. GlobalUnlock(i);
  7. }


 
C'est juste a des fins de test, j'essaie de mettre a jour une variable partagée dans la DLL...
 
Et ca plante.
 
application defined exception 0xc000001d at 0X0012f540
 
Vous auriez une idée sur le pourquoi du comment ?

mood
Publicité
Posté le 20-07-2003 à 19:45:23  profilanswer
 

n°462839
*syl*
--> []
Posté le 20-07-2003 à 20:03:06  profilanswer
 

- Vérifie que la fonction exportée 'stop' de ta DLL s'appelle bien 'stop'
- Si c'est bon, vérifie les conventions d'appels
 
Ah oui, il manque te manque un GlobalFree(Temp) dans ton code delphi et pense à vérifier le code de retour des fonctions..

n°462840
Tetedeienc​h
Head Of God
Posté le 20-07-2003 à 20:05:29  profilanswer
 

*Syl* a écrit :

- Vérifie que la fonction exportée 'stop' de ta DLL s'appelle bien 'stop'
- Si c'est bon, vérifie les conventions d'appels
 
Ah oui, il manque te manque un GlobalFree(Temp) dans ton code delphi et pense à vérifier le code de retour des fonctions..


 
-ouip c'est bon :/
-Conventions d'appel ?  
 
Mercii pour le GlobalFree, et le code de  retour de mes fonctions, finalement, ca peux chier que dans C++, vu que en Delphi ca marche nickel, si je vire l'appel a  la DLL.
 
je vais essayer avec des returns de vérifier le tout...

n°462848
Tetedeienc​h
Head Of God
Posté le 20-07-2003 à 20:25:51  profilanswer
 

Ca plante lors du GlobalUnlock dans la DLL :??: :??: :??:


Message édité par Tetedeiench le 20-07-2003 à 20:26:00
n°462851
Tetedeienc​h
Head Of God
Posté le 20-07-2003 à 20:28:50  profilanswer
 

OK, fallait juste préciser __stdcall dans la fonction dans la DLL et ca marche.
 
Comme quoi.

n°462860
*syl*
--> []
Posté le 20-07-2003 à 20:53:35  profilanswer
 

tetedeiench a écrit :

OK, fallait juste préciser __stdcall dans la fonction dans la DLL et ca marche.
 
Comme quoi.

C'était donc un problème de convention d'appel ;)

n°462867
Tetedeienc​h
Head Of God
Posté le 20-07-2003 à 21:06:40  profilanswer
 

*Syl* a écrit :

C'était donc un problème de convention d'appel ;)


Vi :)
 
merci :jap: :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Shared memory en c++ et delphi :( GlobalAlloc, GlobalLock, etc...

 

Sujets relatifs
Organiser ses compos delphi sur la form ?[Java ou Delphi] calcul de débit ADSL
référencer une DLL créée en Delphi?[Astuce delphi] Timage qui "clignote" quand on change l'image...
[Delphi] Intégrer une font a l'appli[Delphi] Définir une méthode dans un unité différente de la déclaratio
G crée une dll avec delphi, comment creer les .h et .lib pour le C++Remplire un formulaire PHP sous Delphi
[Delphi 6] : Afficher les infos de versionsZipper des fichiers sous delphi
Plus de sujets relatifs à : Shared memory en c++ et delphi :( GlobalAlloc, GlobalLock, etc...


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR