Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Appel DLL C++ avec tableau +in/out [ Windows / ActiveX / COM ] (babe59)

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é 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 [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 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 communication entre un service windows et une DLL [ par khachbi ] bonjour,j'ai développé un service en C#, dans ce service j'ai implimenté des methodes spécifiques.la dll que je veux developper fait appel au fonction gdcm [ par Bidou ] Bonjour,J'essaye d'utiliser la libraire gdcm (qui est open source) qui est écrite en c++.Un wrapper C# a cependant vu le jour, et c'est ce qui m'intér Bug pour créer device [ par LordOfTheShadow ] Salut à tous j'ai essayé de faire un petit moteur 3D grâce à un webcast de msdn mais j'ai un bug alors que même après avoir vérifié j'ai fait exacteme Récupération des données d'une fonction d'une dll native [ par maladebe ] Salut,Je dois récupérer d'une fonction, dans une dll écrite en C/C++, un pointeur sur une structure. Je pensais avoir trouvé comment récupérer les inf utilisation de fonctions de classe à partir d'une DLL C++ dans une application C# [ par telephonerouge ] bonjour,Alors en tout désepoir je vous écris espérant que vous pourriez m'aider.Alors mon problème est:J'ai une application en C#.net qui ne contient


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.