fkerbourch
Messages postés7Date d'inscriptionjeudi 26 mai 2005StatutMembreDernière intervention14 novembre 2008
-
8 mars 2006 à 17:23
fkerbourch
Messages postés7Date d'inscriptionjeudi 26 mai 2005StatutMembreDernière intervention14 novembre 2008
-
9 mars 2006 à 17:11
Je veux appeler une fonction d'une dll écrite en C++ (compilé avec VS .
net). Mais ca ne fonctionne pas ?
Je suis débutant en C# et je pense qu'il y a un pb de type entre "TCHAR*" et "string"
//déclaration C++ :
int PrinterSendFileTo(TCHAR* printerName, TCHAR* filePath)
fkerbourch
Messages postés7Date d'inscriptionjeudi 26 mai 2005StatutMembreDernière intervention14 novembre 2008 9 mars 2006 à 11:03
Je fais donc cette déclaration :
[DllImport("DMIPrintMonitor.dll",CharSet=CharSet.Unicode)]
static extern int PrinterSendFileTo(StringBuilder printerName, StringBuilder filePath);
et l'appel :
int rep=PrinterSendFileTo(new StringBuilder("EPSONC82"),new StringBuilder(openFileDialog1.FileName));
Ca ne fonctionne pas ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 9 mars 2006 à 12:00
Tu nous aide pas beaucoup : "Ca ne fonctionne pas" c'est quand même très vague, utilise un try/catch. As tu une exception ? Quel est le message de l'exception ? Le programme trouve t'il la dll ? T'es sûr que c'est le marshalling qui ne marche pas ou c'est ta fonction PrinterSendFileTo ?
StringBuilder c'est utile si tu dois récupérer la chaine modifiée mais la tu peux pas la récupérer tu as pas maintenue de référence.
fkerbourch
Messages postés7Date d'inscriptionjeudi 26 mai 2005StatutMembreDernière intervention14 novembre 2008 9 mars 2006 à 12:27
La fonction "PrinterSendFileTo" de la dll fonctionne puisque je fait la même chose avec un prog DELPHI.
Les valeurs des chaines sont des constantes non modifiées, donc StringBuilder ne sert à rien ?
Je vais modif programme pour récupérer l'exception si il en a une.
(désolé je débute et ma capacité à écrire rapidemment en C# est limité)
fkerbourch
Messages postés7Date d'inscriptionjeudi 26 mai 2005StatutMembreDernière intervention14 novembre 2008 9 mars 2006 à 17:11
En fait ca fonctionne avec
[DllImport("DMIPrintMonitor.dll",CharSet=CharSet.Unicode)]
static extern int PrinterSendFileTo(String printerName, String filePath);
et
PrinterSendFileTo( "EPSONC82", filename );
J'avais fait une connerie, sorry et merci pour ton aide.