begin process at 2012 02 11 11:18:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

ActiveX / COM

 > 

Appel DLL C++ avec tableau +in/out


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

Appel DLL C++ avec tableau +in/out

lundi 20 octobre 2008 à 12:36:31 | Appel DLL C++ avec tableau +in/out

babe59

Bonjour,

Je dois appeler un méthode d'une DLL C++  (xxx_G) dans mon programme C#. Cette méthode possède un structure d'entrée/sortie en argument. J'ai trouvé le principe mais il me manque quelques infos... Pour m'aider, j'ai un exemple de programme en C++ qui appelle cette DLL. Pourriez vous m'aider à faire l'appel de cette DLL Merci


Voici le source C++

Header_G.h

#ifndef

HEADER_G_H_
#define HEADER_G_H_
typedefstruct
{
float H;
float B;
float T[3];
short TYPE
char  TYPE2
short RET[12][3];
} inoutG, *lpinoutG;
extern"C"void XXX_G(lpinoutG t);
extern"C"void trace();
#endif/*HEADER_G_H_*/
le programme de test C++
...
int main()
{
   lpinoutGOP2 param;
  
param->H = 30.0;
   param->B = 2500.0;
   param->T[0] = 30.0;
   param->T[1] = 31.0;
   param->T[2] = 32.0;
   ...
   xxx_G(param);
...


Voici mon programme C# de test

[

StructLayout (LayoutKind.Sequential)]
publicstructTPARAM
{
[
MarshalAs(UnmanagedType.R4)] publicfloat H;
[MarshalAs(UnmanagedType.R4)] publicfloat B;
[MarshalAs(UnmanagedType.LPArray)] publicfloat[] T;
[MarshalAs(UnmanagedType.I2)]publicshort TYPE;
[MarshalAs(UnmanagedType.AnsiBStr)]publicchar TYPE2;
[MarshalAs(UnmanagedType.LPArray)]publicshort[,] RETOUR;
}

[DllImport("xxx_G.dll")]
publicstaticexternvoid PTD_GOP2(
[
MarshalAs(Unmana
gedType
.LPStruct)] refTPARAM param);Public Form1 ()
{
xxx_G (ref param)
}

DT
lundi 20 octobre 2008 à 14:24:08 | Re : Appel DLL C++ avec tableau +in/out

Lutinore

Administrateur CodeS-SourceS
Réponse acceptée !

Salut, il ne me semble pas possible de passer le dernier paramètre sous forme de tableau à 2 dimensions, tu pourras par exemple utiliser "la notation tableau" avec un pointeur fixé sur le tableau "RET".

[ StructLayout( LayoutKind.Sequential ) ]
private struct InOutG
{
    public float H;
    public float B;
    [ MarshalAs( UnmanagedType.ByValArray, SizeConst = 3 ) ]
    public float[ ] T;
    public short TYPE;
    public byte TYPE2;
    [ MarshalAs( UnmanagedType.ByValArray, SizeConst = 12*3 ) ]
    public short[ ] RET;
}

[ DllImport( "xxx_G.dll" ) ]
private static extern void XXX_G( ref InOutG t );



Cette discussion est classée dans : dll, xxx, param, marshalas, unmanagedtype


Répondre à ce message

Sujets en rapport avec ce message

C# et dll [ par trunk2005 ] Salut tous,j'ai essayé de faire une dll de mon programme (pgm.dll)  qui utilise une autre xxx.dll écrite en C++, le problème c'est que quand je généré Probleme de marshaling [ par darunia ] Salut,Je dois appeler une fonction qui se trouve dans un Dll écrite en C++.Cette fonction prend en entrée des chaine de type wchar_t*.Le probleme est du C/C++ au C# [ par louvinon ] Bonjour,on me fournit une DLL faites en C++/C.En C++, j'ai ceci : typedef struct{ UCHAR cnv_name [8]; ULONG lgd_utcc; ULONG lgd_phys; ULONG lgd_m dllimport passage de structure en char * [ par toni93330 ] Bonjour,Voila, je sais qu'il y a pas mal de post sur les dllimport en c#, mais je n'ai pas trouvé ce que je cherche (ou mal ?).Alors voila j'ai une dl [C#] Problème de passage en paramètre d'une dll [ par pietou ] Bonjour, J'ai une dll Win32 s'exécutant normallement sur un système mainframe et que j'aimerais récupérer derrière une interface en C#. La structure d dll c# et java [ par dude666 ] Bonjour à tous Voila je vous explique mon probleme. J'ai une Dll en c# et je voudrais utiliser cette DLL dans un projet java...et la je seche grave. DLL necessitant des données! [ par safisoft ] Bonjours tlm; j'ai programmé une DLL contenant plusieurs interfaces et classes dont l'une utilise des données (des fichiers text des images ....;  le Créer une dll en C# [ par nicotom ] Salut à tousJe suis en plein stage et je dois transformer un programme fait en C#.Il me faut transformer les fichiers contenant les classes en dll et probleme de dll [ par nicotom ] Bonjour à tousJe suis en train de réaliser un logiciel sous VS2003 qui comporte environ 25 classes.Mon but est de remplacer ces classes par une dll.J' utiliser une dll avec visual studio c++ ? [ par vdougnac ] Bonjour, J'utilise visual studio 2003 depuis très peu de temps et je doit utiliser une dll dans mon programme ecrit en c++. Avec cette dll, est fou


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 4,072 sec (3)

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