begin process at 2010 02 10 06:44:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Système

 > 

Exécution

 > 

dll c++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

dll c++

mardi 30 juin 2009 à 22:01:53 | dll c++

chowdid

Bonjour, comment interfacer sous delphi cette fonction d'une dll en c++

Code de la dll

typedef enum{
    YUY2=0,
    RGB555,
    RGB24
}ColorSpace;

typedef enum{
    NTSC160X120=0,
    NTSC320X240,
    NTSC640X480,
    NTSC704X480,
    NTSC720X480,
    PAL176X144,
    PAL352X288,
    PAL640X576,
    PAL704X576,
    PAL720X288,
    PAL720X576
}VideoSize;

int IVASDK89_SetDeviceOutputFormat(ColorSpace  pCSType, VideoSize  pVSize);

Merci pour vos réponses.


mercredi 1 juillet 2009 à 08:13:20 | Re : dll c++

f0xi

Membre Club Administrateur CodeS-SourceS


type
  ColorSpace = (
    YUY2 = 0,
    RGB555,
    RGB24
  );

  VideoSize = (
    NTSC160X120 = 0,
    NTSC320X240,
    NTSC640X480,
    NTSC704X480,
    NTSC720X480,
    PAL176X144,
    PAL352X288,
    PAL640X576,
    PAL704X576,
    PAL720X288,
    PAL720X576
  );


function IVASDK89_SetDeviceOutputFormat(
    pCSType: ColorSpace;
    pVSize : VideoSize
  ) : integer;




mercredi 1 juillet 2009 à 11:39:45 | Re : dll c++

Guillemouze

pour completer la reponse de foxi, je dirai plutot

{$Z4} // on set à 4 octets
type
  ColorSpace = (
    YUY2 = 0,
    RGB555,
    RGB24
  );

  VideoSize = (
    NTSC160X120 = 0,
    NTSC320X240,
    NTSC640X480,
    NTSC704X480,
    NTSC720X480,
    PAL176X144,
    PAL352X288,
    PAL640X576,
    PAL704X576,
    PAL720X288,
    PAL720X576
  );
{$Z1} //on remet la taille par defaut

function IVASDK89_SetDeviceOutputFormat(
    pCSType: ColorSpace;
    pVSize : VideoSize
  ) : integer;

car il me semble que les enums en C++ sont codés sur 4 octets
jeudi 2 juillet 2009 à 11:51:22 | Re : dll c++

rt15

Membre Club Administrateur CodeS-SourceS
L'union fait la force.

Pour compléter la réponse de Guillemouze, je dirais plutôt :

function IVASDK89_SetDeviceOutputFormat(
    pCSType: ColorSpace;
    pVSize : VideoSize
  ) : integer; cdecl; external 'toto.dll';

Encore que la convention d'appel et la taille des enums peuvent varier en fonction des options de compilation du C++, de pragma...
vendredi 3 juillet 2009 à 00:44:50 | Re : dll c++

f0xi

Membre Club Administrateur CodeS-SourceS


oui j'avais pas mis la convention d'appel a cause du fait qu'on ne sait pas si c'est cdecl (convention C) ou stdcall (convention C++ win 32) ...


on pourrait même ajouter, pour faire complet :



Unit Test;

interface

uses Windows, SysUtils;

{.$DEFINE USEENUMSIZE2}
{$DEFINE USECCSTDCALL}
{.$DEFINE USELOCALIMPLEMENT}
{.$DEFINE USESAFEENUM}


{$IFNDEF USESAFEENUM}
  {$IFDEF USEENUMSIZE2}
    {$Z2}
  {$ENDIF}
type
  {$EXTERNALSYM ColorSpace}
  ColorSpace = (
    YUY2   = 0,
    RGB555,
    RGB24
  );

  {$EXTERNALSYM VideoSize}
  VideoSize = (
    NTSC160X120 = 0,
    NTSC320X240,
    NTSC640X480,
    NTSC704X480,
    NTSC720X480,
    PAL176X144,
    PAL352X288,
    PAL640X576,
    PAL704X576,
    PAL720X288,
    PAL720X576
  );
  {$IFDEF USEENUMSIZE4}
    {$Z1}
  {$ENDIF}
{$ELSE}
const
  ColorSpaceYUY2   = 0;
  ColorSpaceRGB555 = 1;
  ColorSpaceRGB24  = 2;
                            // oops :)
  VideoSizeNTSC160X120 = 0; // $0000;
  VideoSizeNTSC320X240 = 1; // $0001;
  VideoSizeNTSC640X480 = 2; // $0002;
  VideoSizeNTSC704X480 = 3; // $0004;
  VideoSizeNTSC720X480 = 4; // $0008;
  VideoSizePAL176X144  = 5; // $0010;
  VideoSizePAL352X288  = 6; // $0020;
  VideoSizePAL640X576  = 7; // $0040;
  VideoSizePAL704X576  = 8; // $0080;
  VideoSizePAL720X288  = 9; // $0100;
  VideoSizePAL720X576  = 10;// $0200;

{$ENDIF}

function IVASetDeviceOutputFormat(pCSType: ColorSpace; pVSize: VideoSize): integer; {$IFDEF USECCSTDCALL}stdcall{$ELSE}cdecl{$ENDIF};


implementation



{$IFNDEF USELOCALIMPLEMENT}
const
  DLLNAME = 'MyLib.dll';

function IVASetDeviceOutputFormat;  external DLLNAME name 'IVASDK89_SetDeviceOutputFormat';

{$ELSE}

function IVASetDeviceOutputFormat(pCSType: ColorSpace; pVSize: VideoSize): integer;
begin
  result := -1;
  { ... todo ... }
end;
{$ENDIF}

end.





Cette discussion est classée dans : dll, enum, colorspace, videosize


Répondre à ce message

Sujets en rapport avec ce message

Ouvrir un fichier .exe ou .dll sous forme hexa [ par delphi ] Comment faire pour ouvrir un fichier .exe ou .dll sous son format Hexadecimal et modifier un octet ou mot donné. Inserer une DLL... [ par Delphi ] Salut, je voudrai savoir comment je dois inserer une dll avec delphi pour pouvoir utiliser cette dll svp ? prb avec dll et tableau dynamique [ par bd ] actuellement je recois en parametre d'une fonction un tableau de longueur variable. ce tableau est rempli dans la fonction de la dll.au retour dans la appel dll en C depuis delphi [ par bdv ] quel est le code pour appeler une fonction X dans une dll développée en C? MDI et DLL et tabstop [ par polux2002 ] Bonjour,J'ai fais un projet avec des fenêtres MDI dans des DLL, quand j'appuie sur tabulation sur une des fenêtre, il ne se passe rien. Comment faire Dlls... Besoin "urgent" !! [ par Bestiol ] Salut tt le monde !!J'aurais besoin qu'on m'aide pour l'utilisation des dlls dans Delphi(6)... De la création de la dll à l'implémentation des appels Récupération de PChar renvoyés par une DLL [ par daniel ] J'ai écrit une DLL en Delphi 5 devant me renvoyer des chaînes de caractères. Je les ai codés en PChar. Tout ce passe bien lorsque j'appelle cette DLL declaration NetWkstaUserGetInfo [ par WinBernardo ] bonjourComment declarer NetWkstaUserGetInfo qui est une fonction de la dll netapi32.dll Hook dll : comment ca marche ? [ par Millenius ] Bonjour, je voudrais hooker un dll.Le clavier et la souris, ca je sais faire.Ce que je voudrais, c pouvoir connaitre les flux de données entrant et so Erreur avec le module 'bordbkl50.dll' [ par lomig ] A l'exécution de mon appli (sous delphi5-Win2000), j'ai parfois un message d'erreur qui bloque mon appli mais aussi l'environnement Delphi (je suis ob


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales