Intégration de code C++ en C#

Intégration de code C++ en C# - C#/.NET managed - Programmation

Marsh Posté le 27-05-2007 à 00:05:06    

Bonjour,
 
Je débute en C# et j'aimerais utiliser une dll C++ dans du code C#.
Plus excatement la dll de "power management" (PowrProf.dll). Je sais qu'il faut utiliser Dllimport mais le problème c'est que la fonction que je veux intégrer utilise des types non défini en C#.
DWORD WINAPI PowerGetActiveScheme(HKEY UserRootPowerKey, GUID** ActivePolicyGuid);
 
J'ai essayé ça :  

Code :
  1. [DllImport("PowrProf.dll" )]
  2. unsafe public static extern uint PowerGetActiveScheme(long UserRootPowerKey, void** ActivePolicyGuid);[cpp]
  3. mais je n'arrive pas à créer le ActivePolicyGuid. J'ai essayé un peu tout et n'importe quoi comme :
  4. [cpp]
  5. unsafe
  6.         {
  7.             char[] g = new char[100];
  8.             uint toto;
  9.             fixed (char* p = g) toto = PowerGetActiveScheme(0, (void **) &p);
  10.         }


 
Et ce code ne compile pas : Impossible de prendre l'adresse d'une variable locale en lecture seule
 
Comment faire pour créer et passer un double pointeur et importer des fonctions c++ avec des types inconnus en c#?
 
Merci

Reply

Marsh Posté le 27-05-2007 à 00:05:06   

Reply

Marsh Posté le 27-05-2007 à 01:03:06    

Non non non, là tu fais n'importe quoi !
La conversion des types C++ en types C# se fait par Marshalling. Autant te le dire de suite : c'est un bordel sans nom, mais c'est faisable et ça fonctionne.
Jette donc un oeil ici :
http://nico-pyright.developpez.com [...] 5/interop/
http://www.pinvoke.net/
http://msdn2.microsoft.com/fr-fr/l [...] S.80).aspx
http://msdn2.microsoft.com/en-us/l [...] S.71).aspx

Reply

Marsh Posté le 27-05-2007 à 12:46:53    

Ok merci je vais regarder ces liens.
Je me doutais que je faisais n'importe quoi  :whistle:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed