begin process at 2010 02 09 21:39:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Autre

 > 

C# et Dll C++


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

C# et Dll C++

jeudi 24 mai 2007 à 18:26:52 | C# et Dll C++

rbonnal

Bonjour a tous !
 

Je répète que suis aussi fort en C# que Sarko en roller !!!

J'ai un problème assez embêtant. J'importe une DLL C++ en C# de la manière suivante :

[DllImport("DocFileATL.dll")]
        publicunsafestaticexternint GetInfo(int* FileNum, char* PVers, int* FPSign);
     

Je fait appel a la fonction de cette façon : 
 
unsafe
      {

            char* PVers = null;
            GetInfo(&FileNum, PVers, & FPSign); 
       }


La il me met "invalid ptr" coté CPP (même si je lui affecte une valeur avant le CPP).

La fonction GetInfo modifi tous les arguments, ca marche sur les 2 int mais pas sur le char *. A la base je n'avais pas de char * mais une string, ca n'a pas marcher non plus. J'ai aussi essayer [MarshalAs(UnmanagedType.LPTStr)] string

Pour le type de PVers.

Est-ce que quelqu'un connais un tuto ou connais la façon de faire pour que ca marche.

jeudi 24 mai 2007 à 19:16:03 | Re : C# et Dll C++

Lutinore

Administrateur CodeS-SourceS
Réponse acceptée !
Salut, attention 'char' fait 2 octets en C# et 1 en C++, utilise sbyte* ou IntPtr ou un StringBuilder avec une taille pré-initialisé.
jeudi 24 mai 2007 à 22:22:50 | Re : C# et Dll C++

ShareVB

Réponse acceptée !
salut,

tu as l'attributs MarshalAs pour spécifier le type de marshalling...http://www.sharevb.net/Les-API-en-VB-Net.html

ShareVB
vendredi 25 mai 2007 à 11:52:05 | Re : C# et Dll C++

rbonnal

Merci beaucoup de votre aide, il fallait en fait utiliser le stringbuilder et le marshalling comme cela :

[ DllImport("DocFileATL.dll")]
        publicunsafestaticexternint GetInfo(
int * FileNumParam,
[ MarshalAs ( UnmanagedType .LPWStr)] StringBuilder PVersParam, int* FPSignParam);


et ensuite :
 

FileNum = 0;
FPSign = 0;
StringBuilder PVers
= new StringBuilder ();
 
unsafe
{

   GetInfo(&FileNum, PVers, & FPSign); 
         }

 
Dans la déclaration j'ai changer les noms de xxx en xxxParam car c'est plus correct mais c'est pareil de tout façon.

Merci Encore !

vendredi 25 mai 2007 à 12:03:12 | Re : C# et Dll C++

rbonnal

Pardon pour le publicunsafestaticexternint,
c'est public unsafe static extern int....


Cette discussion est classée dans : int, dll, char, pvers, getinfo


Répondre à ce message

Sujets en rapport avec ce message

Retour d une DLL [ par ZaRMaS ] Salut a tous, J ai un petit probleme avec ma dll code en C. Elle retourne un char * et je cherche a recuperer en csharp le retour de cette fonction. V DLL C++ en C# --- Connversion d'un char* en string [ par grojulius ] Bonjour !Je développe une appli qui utilise la DLL moo.dll (en général utilisée par les script mIRC) qui est codée en C++La plupart des fonctions de c gros problème avec DllImport : EntryPointNotFound [ par kyfranBibax ] Coucou, En fait, je dois utiliser une fonction qui se trouve dans un programme en C. Cette fonction en appelle d'autres (libtiff) et j'ai donc créer convertion int vers char ou string. [ par KillerHunter ] Bonjour,   Je suis en train de créer un petit programme en C#. Il s’agit d’un convertisseur binaire, hexadécimal et décimal. Je n’ai qu’un Pbs avec des pointeurs [ par z_san ] Bonjour à tousVoilà j'ai un ptit soucis avec des pointeurs, voilà je développe une dll en C++ sous vc++ express. Dans cette dll j'ai accés à une struc int (ASCII) to char (ou string) [ par JuS ] Bonjour amis développeurs cshapriens,Je cherche à récupérer le caractère correspondant à un code ASCII.Comment faire ???//code ASCII du "A"int code = ArrayList (C#) vers int ** [ par typhoonx ] Bonjour, je voudrai réaliser une conversion d'un ArrayList contenant un ArrayList pour chaque case du premier ArrayList en int ** dans le but d'appele pb d'importation de dll createprocess pour un pocket pc [ par defcoco ] voila mon pb je voudrais utiliser la fonction createprocess mais je dvp une appli pour pocket pc donc la fonction n'existe pasg vu kil fallait importe conversion de char* en C# [ par gwenn035 ] Bonjour à tous, je debute en C# et en Cpp (je suis plutot Java pour le moment) et j'ai fais une dll en vc++ qui contient une procedure qui a 4 paramèt Reflection DLL [ par RM50Man ] Voila le code ou j utilise la reflection pour appeler une méthode static dans ma DLL Assembly asm = Assembly.LoadFrom("PremiereDLL.dll"); Type[] types


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,421 sec (4)

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